传统的冒泡排序
public static void bubblingSort(int[] nums){
int len = nums.length;
int count = 1;
int temp = 0;
for (int j = 0; j < len ; j++) {
for (int i = 0; i < len - 1 - j; i++) {
if(nums[i] > nums[i+1]){
temp = nums[i];
nums[i] = nums[i+1];
nums[i+1] = temp;
}
System.out.println(Arrays.toString(nums));
}
System.out.println("===========");
}
}
测试结果
image.png
从测试结果可以看出来在倒数第四次就已经排好序了,其实就不用在继续排序了,所以这个算法是可以优化一下,排好序了就让它停止了
什么时候排好了呢?就是当一次冒泡,没有发生交换的时候,就可以证明数组已经排好序了
优化代码
public static void bubblingSort(int[] nums){
int len = nums.length;
int count = 1;
int temp = 0;
for (int j = 0; j < len ; j++) {
boolean flag = true;
for (int i = 0; i < len - 1 - j; i++) {
if(nums[i] > nums[i+1]){
temp = nums[i];
nums[i] = nums[i+1];
nums[i+1] = temp;
flag = false;
}
System.out.println(Arrays.toString(nums));
}
System.out.println("===========");
//当没有发生交换的时候就结束循环
if(flag){
break;
}
}
}
测试结果
image.png