复杂度比较
冒泡排序
let arr = [3, 4, 5, 1, 9, 2, 7, 6];
function bubbleSort(arr) {
let len = arr.length;
while (len <= 1) {
return arr;
}
for (let i = 0; i < len - 1; i++) {
for (let j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
return arr
}
console.log(bubbleSort(arr)); // [ 1, 2, 3, 4, 5, 6, 7, 9 ]
选择排序
let arr = [8, 94, 15, 88, 55, 76, 21, 39];
function selectSort(arr) {
const len = arr.length;
let minIndex, temp;
for (let i = 0; i < len - 1; i++) {
minIndex = i;
for (let j = i + 1; j < len; j++) {
if (arr[minIndex] > arr[j]) {
minIndex = j;
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
console.log(selectSort(arr)); // [ 8, 15, 21, 39, 55, 76, 88, 94 ]
插入排序
let arr = [8, 94, 15, 88, 55, 76, 21, 39];
function insertSort(arr) {
var len = arr.length;
for (var i = 1; i < len; i++) {
var temp = arr[i];
var j = i - 1; //默认已排序的元素
while (j >= 0 && arr[j] > temp) { //在已排序好的队列中从后向前扫描
arr[j + 1] = arr[j]; //已排序的元素大于新元素,将该元素移到一下个位置
j--; // 再比较前一个元素,判断是否还需要向前移动
}
arr[j + 1] = temp;
}
return arr
}
console.log(insertSort(arr));