算法笔记系列:冒泡排序
普通版
function bubbleSort(arr) {
// 外层进行 n-1 轮遍历
for (var i = 0, len = arr.length; i < len - 1; i++) {
// 内层进行 n-1-i 次比较排序
for (var j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) _sort(arr, j, j + 1);
}
}
}
function _sort(arr, i, j) {
var t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
function bubbleSort(arr) {
var len = arr.length,
i = 0,
// 用来记录最后一位发生过 位置交换 的元素索引
lastSwappedIndex;
while (i < len - 1) {
lastSwappedIndex = 0;
for (var j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
_sort(arr, j, j + 1);
lastSwappedIndex = j + 1;
}
}
// 已经有序部分的元素个数
i = len - lastSwappedIndex;
}
}
function _sort(arr, i, j) {
var t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}