升级版的冒泡排序Java

(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运行结果如下:

猜你喜欢

转载自blog.csdn.net/weixin_52563520/article/details/124506050
今日推荐