**
最近复习js基本知识 发现对时间和空间的复杂度有些含蓄不清,通过排序来梳理一下 如下是手写的各种排序方式
**
冒泡排序
let arrs = [3, 1, 4, 6, 0, 7];
function bubbSort(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
return arr
}
// console.log(bubbSort(arrs))
选择排序
function selsctSort(arr) {
for (let i = 0; i < arr.length; i++) {
let min = i;
let index = i + 1;
while (index < arr.length) {
if (arr[min] > arr[index]) {
min = index;
}
index++;
}
[arr[i], arr[min]] = [arr[min], arr[i]];
}
return arr
}
// console.log(selsctSort(arrs))
快速排序
function quickSort(arr) {
if (arr.length < 2) {
return arr
} else {
let left = [], right = [], mid = arr.splice(Math.floor(arr.length / 2), 1);
let i = 0;
while (i < arr.length) {
if (arr[i] < mid) {
left.push(arr[i])
} else {
right.push(arr[i])
}
i++;
}
return quickSort(left).concat(mid, quickSort(right))
}
}
// console.log(quickSort(arrs))
插入排序
function insertSort(arr) {
for (let i = 0; i < arr.length; i++) {
let key = arr[i];
let j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
return arr
}
// console.log(insertSort(arrs))
归并排序
function merge(left, right) {
let result = [];
while (left.length > 0 && right.length > 0) {
if (left[0] > right[0]) {
result.push(right.shift())
} else {
result.push(left.shift())
}
}
return result.concat(left, right)
}
function mergeSort(arr) {
if (arr.length == 1) {
return arr
}
let mid = Math.floor(arr.length / 2);
let left = arr.slice(0, mid);
let right = arr.slice(mid);
return merge(mergeSort(left),mergeSort(right))
}
console.log(mergeSort(arrs))
sort排序
```javascript
在这里插入代码片
let newArr = arr.sort((a,b)=>{
return a-b
})