美文网首页
js实现 冒泡排序

js实现 冒泡排序

作者: Kitty__Cat | 来源:发表于2018-03-09 13:45 被阅读0次

    原理:
    两个相邻的数,进行比较,如果前面的数比后面的数大(或小),则交换位置,直到最大的数(或最小的数)沉底!!【从小到大 或 从大到小 都能排序!】

    // 用【冒泡排序】实现数组 从小到大 排序
    var arr = [5, 4, 3, 2, 1];
    
    // 过程分析:
    4 5 3 2 1
    4 3 5 2 1
    4 3 2 5 1
    4 3 2 1 5
    ---------
    3 4 2 1 5
    3 2 4 1 5
    3 2 1 4 5
    ---------
    2 3 1 4 5
    2 1 3 4 5
    ---------
    1 2 3 4 5
    
    外层循环 i(轮数) 内层循环 j(次数)
            0                 4
            1                 3
            2                 2
            3                 1
    从而得出:j = arr.length - 1 - i
    
    // 用【冒泡排序】实现数组 从小到大 排序
    var arr = [20, 12, 3, 40, 15, 6];
    
    // 过程分析:
    12 20 3 40 15 6
    12 3 20 40 15 6
    12 3 20 40 15 6
    12 3 20 15 40 6
    12 3 20 15 6 40
    ---------------
    3 12 20 15 6 40
    3 12 20 15 6 40
    3 12 15 20 6 40
    3 12 15 6 20 40
    ---------------
    3 12 15 6 20 40
    3 12 15 6 20 40
    3 12 6 15 20 40
    ---------------
    3 12 6 15 20 40
    3 6 12 15 20 40
    ---------------
    3 6 12 15 20 40
    
    每一轮筛选,都会得到【剩余数中的那个最大数】!
    
    外层循环 i(轮数) 内层循环 j(次数)
            0                 5
            1                 4
            2                 3
            3                 2
            4                 1
    从而得出:j = arr.length - 1 - i
    

    代码实现:

    for(var i=0; i<arr.length-1; i++) {
        for(var j=0; j<arr.length-1-i; j++) {
            if (arr[j] > arr[j+1]) {
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    

    要实现 从大到小 排序,只需要将if判断里的>号,改成<号即可。

    相关文章

      网友评论

          本文标题:js实现 冒泡排序

          本文链接:https://www.haomeiwen.com/subject/barsfftx.html