1、什么是排序
无序数字按顺序排列、
2、冒泡排序
重复从左右对比,交换顺序 O(n2)
let arr = [5,4,1,3,6,7,8,9,0,6]function sortFun(arr){for(let i=0;i<arr.length-1;i++){for(let j=i+1; j< arr.length; j++){if(arr[i]>arr[j]){[arr[i],arr[j]] = [arr[j],arr[i]]}}}}sortFun(arr)
3、选择排序
重复从数组中查找最小值
let arr = [5, 4, 1, 3, 6, 7, 8, 9, 0, 6, 1, 222];function sortFun(arr) {let length = arr.length - 1;let temp = [];while (length--) {let minItem = Math.min(...arr);arr.splice(arr.findIndex(el=>el === minItem),1)temp.push(minItem);}console.log(temp);return temp;}sortFun(arr);
4、插入排序
思想: 双循环,拿出一张牌进行比较如果大于 handle中每一张 插入后面 , 如果都不大于 放最前面 , 下一轮比较
let arr = [5, 4, 1, 3, 6, 7, 8, 9, 0, 6, 1, 222];function sortFun(arr) {let handle = [];handle.push(arr[0]);for (let i = 0; i < arr.length; i++) {// 随便拿出一张牌let A = arr[i];for (let j = handle.length - 1; j >= 0; j--) {let B = handle[j];if (A > B) {// 插入到后面handle.splice(j + 1, 0, A);// 结束本次break;}// 比到最后一张都没有比B大的,所以是最后一张放到最前面if (j === 0) {handle.unshift(A);}}}console.log(handle);}sortFun(arr);
5、堆排序
6、归并排序
7、快速排序
思想 通过递归 二分的形式进行排序 终止条件是arr.length == 0
let arr = [5, 4, 1, 3, 6, 7, 8, 9, 0, 6, 1, 222];function sortFun(arr) {if(arr.length === 0 ) return arrlet leftArr=[];let rightArr = []let midIndex = Math.floor(arr.length/2)// 数组中原地删除这个值midValue = arr.splice(midIndex,1)[0]for(let i=0;i<arr.length;i++){if(arr[i]< midValue){// console.log(left)leftArr.push(arr[i])}else{rightArr.push(arr[i])}}return sortFun(leftArr).concat(midValue, sortFun(rightArr));}console.log(sortFun(arr))
