冒泡排序: 双层循环进行比较,外层循环控制比较趟数,内层循环控制比较交换次数,每趟结束后最大值都在末尾。
改进的思路是 减少外层循环次数和内层循环的次数。推荐使用改版二,它2个次数都能修改。
经典版本
缺点是某趟已经有序时,后面的次数还是会继续,外层循环次数总是max,内层循环次数还是 max - i
// 缺点是已经有序时,后面的次数还是会继续,注意内部的上限是 max-i
public static void sort(int[] intArr) {
//max为 数组长度-1
int max = intArr.length - 1;
for (int i = 0; i < max; i++) {
System.out.println("第" + (i + 1) + "趟");
for (int j = 0; j < max - i; j++) {
if (intArr[j] > intArr[j + 1]) {
//2数互换
int temp = intArr[j];
intArr[j] = intArr[j + 1];
intArr[j + 1] = temp;
}
System.out.println("比较