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

相关推荐