var bubbleSort = function (arr) {
var length = arr.length;
for (var i = 0; i <length; i++) {
for (var j = 0; j <length - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(j, j + 1);
}
}
}
function swap(index1, index2) {
var temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}
return arr;
}
var arr = [1, 6, 2, 5, 9, 2, 0];
console.log(arr.toString());
console.log(bubbleSort(arr).toString());
由于以上的算法存在重复比较问题,所以以下是一个改进后的,改进点是从内循环中减去了外循环中已跑过的轮数:
var length = arr.length;
for (var i = 0; i <length; i++) {
for (var j = 0; j <length - 1-i; j++) {
if (arr[j] > arr[j + 1]) {
swap(j, j + 1);
}
}
}