原始版,無憂化
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
}
}