使用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
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章