使用js实现冒泡排序,并优化。

原始版,无忧化

function bubbleSort(ary) {
    var l = ary.length

    for(var i = 0; i < l; i++) {
        for(var j = 0; j < l; j++) {
            if(ary[j] > ary[j + 1]) {
                var tmp = ary[j]
                ary[j] = ary[j + 1]
                ary[j+1] = tmp
            }
        }
    }
    return ary
}

优化一:内层循环次数递减

function bubbleSort(ary) {
    var l = ary.length

    for(var i = 0; i < l; i++) {
        for(var j = 0; j < l - i - 1; j++) {
            if(ary[j] > ary[j + 1]) {
                var tmp = ary[j]
                ary[j] = ary[j + 1]
                ary[j+1] = tmp
            }
        }
    }
    return ary
}

优化二:监控内层是否发生过交换,如过某次内层没有发生过交换直接返回。

function bubbleSort(ary) {
    var l = ary.length
    for(var i = l - 1; i >= 1; i--) {
        var swaped = false  //监控内层交换
        for(var j = 0; j < i; j++) {
            if(ary[j] > ary[j + 1]) {
                var tmp = ary[j]
                ary[j] = ary[j + 1] 
                ary[j + 1] = tmp
                swaped = true
            }            
        }
    }
    if(!swaped) {
        return ary
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章