进行排序的数组例子是: arr = [51, 2, 6, 40]
经典的冒泡排序是这样的:
function bubbleSort(arr) {
for(var i = arr.length - 1; i > 0; i--) {
for(var j = 0; j < i; j++) {
if(arr[j] > arr[j+1]) {
var swap = arr[j];
arr[j] = arr[j+1];
arr[j+1] = swap;
}
}
console.log(1);
}
}
var arr = [51, 2, 6, 40];
bubbleSort(arr);
arr; // => 这个数组排完序, 打印了3次1; 最终排序结果: [2, 6, 40, 51]
优化排序:
[假如某一趟排序之后已经有序, 我们需要减少排序的趟数, 这里的实现是通过加入一个布尔变量来识别该轮有没有进行数据的交换, 如果在该轮排序中未发现数据位置的交换, 则说明待排序的无序区中所有的项都满足排序后的结果, 后面的排序也就没有必要了]
function bubbleSort(arr) {
var exchange;
for(var i = arr.length - 1; i > 0; i--) {
exchange = false;
for(var j = 0; j < i; j++) {
if(arr[j] > arr[j+1]) {
var swap = arr[j];
arr[j] = arr[j+1];
arr[j+1] = swap;
exchange = true;
}
}
if(!exchange) return;
console.log(1);
}
}
var arr = [51, 2, 6, 40];
bubbleSort(arr);
arr; // => 数组排完序后, 打印了一次1; 最终排序结果: [2, 6, 40, 51]