基本思想
比较每两个相邻记录的关键字,如果反序则交换
时间复杂度
最好的情况是 O(n)
最坏的情况是 O(n^2)
平均时间复杂度是 O(n^2)
冒泡排序算法的过程如下:(从后往前进行,得到递减数组)
- 比较相邻的两个元素。如果后一个比前一个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从第一对到最后一对。最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了已排好顺序的。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
javascript 实现
function bubbleSort(arr) {
var temp, n = arr.length;
for (var i = n; i > 0; --i) {
for (var j = 0; j < i - 1; j++) {
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
var arr = [3, 2, 4, 9, 1, 5, 7, 6, 8];
var arrSorted = bubbleSort(arr);
console.log(arrSorted);//9, 8, 7, 6, 5, 4, 3, 2, 1