Java基础之冒泡排序法
基本思想:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部
//化繁为简,先死后活
//将多轮排序使用外层循环包括起来即可
/*
数组 [24, 69, 80, 57, 13]
第一轮排序:目标把最大数放在最后
第一次比较[24, 69, 80, 57, 13]
第二次比较[24, 69, 80, 57, 13]
第三次比较[24, 69, 57, 80, 13]
第四次比较[24, 69, 57, 13, 80]
*/
int[] arr = {24, 69, 80, 57, 13};
int temp = 0;//用于辅助交换的变量
//将多轮排序使用外层循环包括起来即可
//先死后活 =>就是arr.length - 1
for(int i = 0; i < arr.length - 1; i++ ){//外层循环是4次
for(int j = 0; j < arr.length - 1 - i; j++ ){//4次比较-3次-2次-1次
//如果前面的数>后面的数,就交换
if(arr[j] > arr[j + 1]){
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println();
System.out.println("==第" + (i + 1) + "轮==");
for(int j = 0; j < arr.length; j++ ){
System.out.print(arr[j] + "\t");
}
}
// /*
// 第二轮排序:目标把最第二大数放在倒数第二个位置
// 第一次比较[24, 69, 57, 13, 80]
// 第二次比较[24, 57, 69, 13, 80]
// 第三次比较[24, 57, 13, 69, 80]
// */
// for(int j = 0; j < 4; j++ ){//3次比较
// //如果前面的数>后面的数,就交换
// if(arr[j] > arr[j + 1]){
// temp = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = temp;
// }
// }
// System.out.println();
// System.out.println("==第二轮==");
// for(int j = 0; j < arr.length; j++ ){
// System.out.print(arr[j] + "\t");
// }
// /*
// 第三轮排序:目标把最第三大数放在倒数第三个位置
// 第一次比较[24, 57, 13, 69, 80]
// 第二次比较[24, 13, 57, 69, 80]
// */
// for(int j = 0; j < 4; j++ ){//2次比较
// //如果前面的数>后面的数,就交换
// if(arr[j] > arr[j + 1]){
// temp = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = temp;
// }
// }
// System.out.println();
// System.out.println("==第三轮==");
// for(int j = 0; j < arr.length; j++ ){
// System.out.print(arr[j] + "\t");
// }
// /*
// 第四轮排序:目标把最第四大数放在倒数第四个位置
// 第一次比较[13, 24, 57, 69, 80]
// */
// for(int j = 0; j < 4; j++ ){//1次比较
// //如果前面的数>后面的数,就交换
// if(arr[j] > arr[j + 1]){
// temp = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = temp;
// }
// }
// System.out.println();
// System.out.println("==第四轮==");
// for(int j = 0; j < arr.length; j++ ){
// System.out.print(arr[j] + "\t");
// }