总结:从外部循环及内部循环优化,减少当排序无变化时仍进行比较的操作。
function bubbleSortUp(arr) {
var sortBorder = arr.length - 1;//无序数列的边界 每次只需要比到此处为止
var lastExchangeIndex = 0;//记录最后一次交换的位置
for (var i = 0; i < arr.length - 1; i++) {
var judge = false;
for (var j = 0; j < sortBorder; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
judge = true;
lastExchangeIndex = j;
}
// document.write(arr + '<br>');
}
if (!judge) {
break;
}
sortBorder = lastExchangeIndex;
}
return arr;
}
console.log(bubbleSortUp([6, 4, 0, 8, 5]));