function quckSort(arr = [], start = 0, end = Infinity) {
let tmp = arr[start];
let i = start;
let j = end;
while (i < j && i >= 0) {
while(i !== j) {
while(i < j && arr[j] > tmp) {
j--;
}
while(i < j && arr[i] <= tmp) {
i++;
}
if (i !== j) {
let cur = arr[j];
arr[j] = arr[i];
arr[i] = cur;
}
}
arr[start] = arr[i];
arr[i] = tmp;
quckSort(arr, start, i-1);
quckSort(arr, i+1, end);
}
}
归并排序
function merge(arr) {
if (arr && arr.length <= 1) {
return arr;
}
let mid = Math.floor(arr.length / 2);
return mergeSort(merge(arr.slice(0, mid)), merge(arr.slice(mid, arr.length)));
}
function mergeSort(left, right) {
let res = [];
while(left.length && right.length) {
if (left[0] <= right[0]) {
res.push(left.shift())
} else {
res.push(right.shift())
}
}
return res.concat(left, right);
}
冒泡排序
let n = 1;
while(n < arr.length) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
let tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
}
}
n++
}
选择排序
for (let i = 0; i < arr.length; i++) {
for(let j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
let tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
插入排序
let res = [arr[0]]
for (let i = 1; i < arr.length; i++) {
let flag = true;
for (let j = res.length - 1; j >= 0; j--) {
if (arr[i] >= res[j]) {
res.splice(j + 1, 0, arr[i]);
flag = false;
break;
}
}
if (flag) {
res.unshift(arr[i]);
}
}