首页 > 编程语言 > 详细

冒泡排序算法之优化

时间:2019-08-18 09:06:41      阅读:106      评论:0      收藏:0      [点我收藏+]
  • 针对问题:
    数据的顺序排好之后,冒泡算法仍然会继续进行下一轮的比较,直到arr.length-1次,后面的比较没有意义的。

  • 方案:
    设置标志位flag,如果发生了交换flag设置为true;如果没有交换就设置为false。
    这样当一轮比较结束后如果flag仍为false,即:这一轮没有发生交换,说明数据的顺序已经排好,没有必要继续进行下去。

  • 代码:
        public int[] bubble(int[] array){
            boolean flag;//是否交换的标志
            for(int i = 0;i < array.length-1;i++){
                flag = false;// 每次遍历标志位都要先置为false,才能判断后面的元素是否发生了交换
                for(int j = 0;j < array.length-i-1;j++) {
                    if (array[j] > array[j + 1]) {
                        array[j] = array[j] ^ array[j + 1];
                        array[j + 1] = array[j] ^ array[j + 1];
                        array[j] = array[j] ^ array[j + 1];
                        flag = true; //只要有发生了交换,flag就置为true
                    }
                }
                if(!flag) break;
            }
            return array;
        }
    

      

冒泡排序算法之优化

原文:https://www.cnblogs.com/maohaitao/p/11371107.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!