JAVA实现冒泡排序北京时间2022年03⽉14⽇,晚23:48分。
天⽓晴朗,多云,温度22-29°,⽐昨天凉快⼀些。
今天来实现JAVA冒泡排序,冒泡排序的思想是逐渐把最⼤的数往后排,然后依次对该最⼤的数前的数继续找出剩余最⼤的数往后排...这样排到最后就完成了排序。
整个过程和选择排序有异曲同⼯之妙,选择排序中往往是每次都选择最⼩的数往前排,它则是每次选择最⼤的数往后排...(⼀)、代码实现:public static void main(String[] args){int[] array = {8,10,9,1,2};int[] arrays = {8,-1,10,-2,9,1,2};sortPlus(arrays);print(arrays);}/*** 思路:冒泡排序是每次把最⼤的值排到最后,然后依次从[0-maxIndex)继续排序* 有点像反向选择排序,选择排序是每次选择最⼩的排前⾯,⽽冒泡排序却是每* 次选择最⼤的数依次丢后⾯。
这样就完成了排序*/public static void sort(int[] array){int size = array.length-1;// array = {8,10,9,1,2}为例// ①8 10 9 1 2,8 9 10 1 2,8 9 1 10 2,8 9 1 2 10// ②8 9 1 2,8 1 9 2,8 1 2 9// ③1 8 2,1 2 8// ④1 2 8 9 10for (int i=0;i<=size;i++){for (int j=0;j<size-i;j++){if (array[j]>array[j+1]){int temp = array[j+1];array[j+1] = array[j];array[j] = temp;}}}}/*** 改进版冒泡:在第⼀层循环定义标志位*/public static void sortPlus(int[] array){int size = array.length-1;// array = {8,10,9,1,2}为例// ①8 10 9 1 2,8 9 10 1 2,8 9 1 10 2,8 9 1 2 10// ②8 9 1 2,8 1 9 2,8 1 2 9// ③1 8 2,1 2 8// ④1 2 8 9 10boolean flag = false;for (int i=0;i<=size;i++){for (int j=0;j<size-i;j++){if (array[j]>array[j+1]){int temp = array[j+1];array[j+1] = array[j];array[j] = temp;// 如果⼀直遇到左边数⼤于右边的时候,说明⼀直需要第⼆层循环flag = true;}else {// 当 8 <= 10时,第⼆轮循环可根据条件break// 既当前相邻两个数,左边⼩于等于右边时,可直接break,既左边的⼀定不是最⼤,⽽右边的不⼀定不是最⼤,所以直接break到下⼀轮去⽐较if (!flag){flag = true;break;}else {// 此情况应该是8 9 10 11时,第⼀次8 < 9 且 flag = false 所以break到第⼀层第⼆次,第⼆次仍然9 < 10 但此时flag = true// 不break,j++继续判断,此时10 < 11 因为flag = false了,所以跳出第⼆层循环flag = false;}}}}}public static void print(int[] array,String ...str){System.out.println(str);for (int i:array){System.out.print(i+" ");}System.out.println();}。