public static void main(String[] args) {
int[] arr1 = {1,5,4,7,2,6,3,8,9};
method1(arr1);
int[] arr2 = {1,5,4,7,2,6,3,8,9};
method2(arr2);
}
//冒泡排序
public static void method1(int[] arr) {
int temp;
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]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
//冒泡排序优化版 默认需要进行length-1趟 如果中间某一趟已经完成了排序 则提前结束
public static void method2(int[] arr) {
int temp;
boolean flag = false; //是否发生了位置交换
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;
}
}
if (flag) { //本趟发生交换 说明需要下一趟
flag = false;
} else { //本趟未发生交换 说明顺序对了 无需下一趟
break;
}
}
System.out.println(Arrays.toString(arr));
}