您好,欢迎来到微智科技网。
搜索
您的当前位置:首页数据结构与算法系列——冒泡排序进阶

数据结构与算法系列——冒泡排序进阶

来源:微智科技网

        首先我们先把算法给展示出来:如下

/**
 * 比较次数 交换次数 变量 (注意,已经排好序的情况)
 *
 * @param array
 */
private static void sort(int[] array){
    int temp;
    //外层循环一次 都会产生一个最大数
    for (int i = 0; i < array.length; i++) {
        //标识排序成功,true排好序,否则false
        boolean flag = true;
        //决定比较次数
        for (int j = 0; j <array.length-1 ; j++) {
            //决定交换次数
            if (array[j]>array[j+1]){
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
                flag = false;
            }
        }
        if (flag){
            break;
        }
        System.out.print(""+(i+1)+"论排序结果:");
        display(array);
    }
}
(1)比较次数  交换次数   如果你对算法比较了解的话你就会发现它的性能是跟这两个知识是有先关的,
而且他们是成反比的存在的,也就是说比较次数跟交换次数越少,它的性能越高,反之。而我在冒泡排序
里面讲解这两个知识点也是为日后再学习其他算法打下基础。上面的代码注释中标示在哪个环节中存在的。

    (2)既然算法是用来做排序的,那么一个集合数据肯定存在不同的顺序结构,也就是说我们带一个集合或者说是

数组的数据进行排序的时候,有可能在不进行全部遍历的情况下就已经把排序给排好了,话句话说就是不用在继续往下

遍历了,因为外层每次遍历一次,至少冒泡排序法内层还需要进行N此遍历,这样子大大的提升了排序的性能,所以我们在代码当中加入了一个变量 flag来表示该集合或者数组是否拍好了序。

    

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务