vlambda博客
学习文章列表

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 - 1for(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");// }