(1)当在规定循环次数之内已经排序ok了,却还在比较,比较麻烦,比如:
原来数组:int[] arr={2,4,6,7,1,3,5,9,10};
排序如下:
循环的结果:2 4 6 1 3 5 7 9 10
循环的结果:2 4 1 3 5 6 7 9 10
循环的结果:2 1 3 4 5 6 7 9 10
循环的结果:1 2 3 4 5 6 7 9 10
循环的结果:1 2 3 4 5 6 7 9 10
循环的结果:1 2 3 4 5 6 7 9 10
循环的结果:1 2 3 4 5 6 7 9 10
循环的结果:1 2 3 4 5 6 7 9 10
循环的结果:1 2 3 4 5 6 7 9 10
(2)更改的核心是 判断每次循环是否执行交换
如下使用布尔值:
代码如下:
package Package; public class text5 { //升级版的冒泡排序 public static void main(String[] args) { boolean a=true; int[] arr={2,4,6,7,1,3,5,9,10}; //发生几次循环,每次循环得出一个最大值 for(int i=1;i<arr.length && a==true;i++) { a=false; //如果执行交换,则下一次可以执行,否则false,不能执行循环 //根据关系图找到关系,每次循环对比的次数 for (int j=0;j< arr.length-i ;j++) { if(arr[j]>arr[j+1]) { a=true; int tmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } show(arr); } show(arr); } public static void show(int[] arr) { System.out.print("循环的结果:"); for(int j=0;j< arr.length;j++) System.out.print(arr[j]+"\t"); System.out.println(); } }y运行结果如下: