javascript排序算法整理

前端面試中必不可少的技能

/** 
 * 高效率冒泡排序
 * 外層for循環控制循環次數
 * 內層for循環負責相鄰兩數交換位置,找到最大數,排到最後
 * 設置done標誌位,減少不必要循環
*/
var arr = [1, 3, 4, 90, 8, 49, 0];
var max = arr.length - 1;
for (var j = 0; j < max; j++) {
    var done = true;
    // 這裏可以根據外層的j 逐漸減少內層遍歷        
    // 因爲每次遍歷置於最後的元素  不需要在參加遍歷 [1, 3, 4, 0, 8, 49, 90]
    for (var i = 0; i < max - j; i++) {
        if (arr[i] > arr[i + 1]) {
            var temp = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = temp;
            done = false;
        }
    }
    if (done) {
        break;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章