zoukankan      html  css  js  c++  java
  • js排序算法基础--冒泡排序

    冒泡排序

    冒泡排序就是比较任何两个相邻的项,如果第一个比第二个大,则交换它们。元素项向上移动至正确的顺序,就好像气泡上升至表面一样,冒泡排序因此得名。

    冒泡排序实现:

    function bubbleSort(array){
        var length = array.length;
        for (var i = 0; i < length; i++) {            //控制数组经过了多少轮排序
            for (var j = 0; j < length - 1; j++) {      //进行了当前项和下一项的比较
                if (array[j] > array[j + 1]) {
                    swap(array, j, j + 1)
                }
            }
        }
    };
    
    function swap (array, index1, index2) {
        var aux = array[index1];
        array[index1] = array[index2];
        array[index2] = aux;
    
        //ES6写法
        [array[index1], array[index2]] = [array[index2], array[index1]];
    }

    我们可以看到外层的循环主要是控制了数组中经过了多少轮循环(数组中的,每一项都经过一轮,轮数和数组的长度是一致的)。然后内循环将从第一位迭代到倒数第二位,内循环实际上进行当前项与下一项的比较,如果当前项比下一项大,则交换它们。

    我们还可以发现当外循环完成一轮,最后一项就已经在正确的位置(即为最大项),然而在后续的循环中,还一直进行着比较,所以我们可以改进一下

    思路:

    如果内循环减去外循环的轮数,就可以避免内循环中所有不必要的比较
    function modifiedBubbleSort() {
        var length = array.length;
        for (var i = 0; i < length; i++) {
            for (var j = 0; j < length - 1 - i; j++) {
                if (array[j] > array[j + 1]) {
                    swap(array, j, j + 1)
                }
            }
        }
    }
  • 相关阅读:
    《淘宝技术这十年》读书总结
    广告:互联网公司的纽带
    广告:互联网公司的纽带
    定期存款要及时
    定期存款要及时
    Java实现蓝桥杯VIP算法训练 自行车停放
    Java实现蓝桥杯VIP算法训练 自行车停放
    Java实现蓝桥杯VIP算法训练 自行车停放
    Java实现蓝桥杯VIP算法训练 数组逆序排列
    Java实现蓝桥杯VIP算法训练 数组逆序排列
  • 原文地址:https://www.cnblogs.com/recode-hyh/p/11204189.html
Copyright © 2011-2022 走看看