冒泡排序

/**
     *  冒泡排序
     *  思想:当前项 和 后一项 进行对比, 如果当前项大于后者 则 调换位置
     *  执行
     *  1.循环数组 arr.length-1 (这里只是代表数组长度调用次数)
     *  2. 嵌套二次循环  arr.length -1 -i (每次循环最大值已经放到最后位置)
     *  3.判断 当前值 和 后者 如 为 true
     *  4.当前值保存为变量,当前值 替换为 后者,在把后者替换为 之前保留的变量
     *  5.继续循环
     */
    //  [10, 9, 8, 40, 70, 6, 15] length:8

    //  结果 :[9, 8, 10, 40, 6, 15, 11, 70]  内层第1次 调用7次 i = 0   length:7 j:0 Clength:7

    //  结果 :[8, 9, 10, 6, 15, 11, 40, 70]  内层第2次 调用6次 i = 1   length:7 j:1 Clength:6

    //  结果 :[8, 9, 6, 10, 11, 15, 40, 70]  内层第3次 调用5次 i = 2   length:7 j:2 Clength:7

    //  结果 :[8, 6, 9, 10, 11, 15, 40, 70]  内层第4次 调用4次 i = 3   length:7 j:3 Clength:4

    //  结果 :[6, 8, 9, 10, 11, 15, 40, 70]  内层第5次 调用3次 i = 4   length:7 j:4 Clength:3
    
    //  结果 :[6, 8, 9, 10, 11, 15, 40, 70]  内层第6次 调用2次 i = 5   length:7 j:5 Clength:2

    //  结果 :[6, 8, 9, 10, 11, 15, 40, 70]  内层第7次 调用1次 i = 6   length:7 j:6 Clength:1


    /**
     * 比较顺序 是由小到大 想要 由大到小 把最里面的比较改变即可
     */

    let arrs = [10, 9, 8, 40, 70, 6, 15, 11];
    function demo(arr) {
        let num = null;
        // 外层循环 控制i 控制比较的轮数
        for (let i = 0; i < arr.length-1; i++) {
            //内循环 控制每一轮的比较次数
            for (let j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    num = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = num
                }                
                
            }
            console.log(i,arr)
            // if(i=0) return false;
        }
        return arr
    }
    console.log(demo(arrs))

  

原文地址:https://www.cnblogs.com/zhaozhenghao/p/14259617.html