冒泡排序:
public class Paixu {
public static int[] MaoPao1(int[] arr) {
int count = 0;
//外层循环,总共有arr.length个数,需要排arr.length - 1次
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]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
count++;
}
}
System.out.println("共排序了" + count + "次");
return arr;
}
//优化
public static int[] MaoPao2(int[] arr) {
int count = 0;
//外层循环,总共有arr.length个数,需要排arr.length - 1次
for (int i = 0; i < arr.length - 1; i++) {
boolean flag = true;
//内层循环,从第一位开始进行两两比较,最终将最大值放到最后
for (int j = 0; j < arr.length - 1 - i; j++) {
//两两比较,交换位置
if (arr[j] > arr[j + 1]) {
flag = false;
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
count++;
}
//如果当前数组已经排好序,则不再进行循环,直接返回
if (flag) {
System.out.println("共排序了" + count + "次");
return arr;
}
}
System.out.println("共排序了" + count + "次");
return arr;
}
}