冒泡排序
function bubbleSort(arr) {
let temp = null;
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
}
}
}
return arr;
}
const sortArr = [3, 66, 77, 33, 44, 99, 12, 8, 4, 876, 11111, 32];
console.log(bubbleSort(sortArr))
选择排序
function selectionSort(arr){
let temp = 0;
let min = 0;
// 找出最小的下标,交换
for(let i=0;i<arr.length-1;i++) {
min = i
for(let j=i+1;j<arr.length;j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
if(min != i) {
temp = arr[i]
arr[i] = arr[min];
arr[min] = temp
}
}
return arr
}
const sortArr = [3, 66, 77, 33, 44, 99, 12, 8, 4, 876, 11111, 32];
console.log(selectionSort(sortArr))
插入排序
function insertSort(arr) {
// 插入排序,默认第一个为有序的,然后拿n先做备份和前面对比,如果大于,就覆盖n, 再往前找,直到小于n,原地覆盖
for(let i=1;i<arr.length;i++) {
let value = arr[i]
let position = i;
while (position>0&&arr[position-1]>value) {
arr[position] = arr[position-1]
position--
}
arr[position] = value
}
return arr
}
const sortArr=[3, 66, 77, 33, 44, 99, 12, 8, 4, 876, 11111, 32];
console.log(insertSort(sortArr))
归并排序
快速排序
堆排序
希尔排序(插入排序的改良版)
ps: https://zhuanlan.zhihu.com/p/42586566