js實現(xiàn) 冒泡排序

原理:
兩個相鄰的數(shù),進行比較,如果前面的數(shù)比后面的數(shù)大(或?。?,則交換位置,直到最大的數(shù)(或最小的數(shù))沉底?。 緩男〉酱?或 從大到小 都能排序!】

// 用【冒泡排序】實現(xiàn)數(shù)組 從小到大 排序
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

外層循環(huán) i(輪數(shù)) 內層循環(huán) j(次數(shù))
        0                 4
        1                 3
        2                 2
        3                 1
從而得出:j = arr.length - 1 - i
// 用【冒泡排序】實現(xiàn)數(shù)組 從小到大 排序
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

每一輪篩選,都會得到【剩余數(shù)中的那個最大數(shù)】!

外層循環(huán) i(輪數(shù)) 內層循環(huán) j(次數(shù))
        0                 5
        1                 4
        2                 3
        3                 2
        4                 1
從而得出:j = arr.length - 1 - i

代碼實現(xiàn):

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;
        }
    }
}

要實現(xiàn) 從大到小 排序,只需要將if判斷里的>號,改成<號即可。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容