原始版,无忧化
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
}
}