插入排序
insertOnSort(arr: Array<Number>) {
// const arr = [5, 3, 4, 1, 2];
for (let i = 1; i < arr.length; i++) {
let current = arr[i]; // 3
let j = i;
while (j > 0) {
if (current < arr[j - 1]) {
arr[j] = arr[j - 1]; // [5,5,4,1,2]
} else {
break;
}
j--;
}
arr[j] = current; // 把值给插入回去
}
}
冒泡排序
bubbleSort(arr: Array<Number>) {
// const arr = [5, 3, 4, 1, 2];
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
const temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
快速排序
quickSort(arr: any) {
// const arr = [5, 3, 4, 1, 2];
if (arr.length <= 1) {
return arr;
}
const num = arr[0]; //选取一个数作为基准点
let left = [];
let right = [];
for (let i = 1; i < arr.length; i++) {
if (arr[i] <= num) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
left = this.quickSort(left);
right = this.quickSort(right);
left.push(arr[0]);
let res: any = left.concat(right);
console.log(res);
return res;
}