冒泡排序是很稳定且简单的一种排序,适合小数排序,这里主要讲解冒泡排序如何进行优化
实现思路及代码优化思路
有时,我们进行排序时,有可能已经完全排好了,但是循环还没有停,因为并没有循环遍历结束,所以还在继续浪费时间,进行遍历
这时候,我们可以设置一个标志位(flag),如果一次遍历下来没有发生数字置换,那么就可以证明,顺序已经排好,无需再进行下一次循环遍历了
然后,标志位(flag)的状态也发生改变,最后在第二层循环结束时,进行判断标志位(flag)的状态进行相应的操作即可。
代码实现
public static void sort(int[] arr) {
// 循环的次数
int count = 0;
// 标识变量,标识是否进行过交换
boolean flag = false;
int temp = 0;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
// 如果前面的数比后面的数大,则交换
if (arr[j] > arr[j + 1]) {
flag = true;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
count++;
}
// 直接停止
if (!flag) {
break;
} else {
flag = false;
}
}
// 打印遍历的次数
System.out.println("循环遍历了" + count);
}



