排序算法(持续更新)
一、快速排序
基本思路
双指针+递归分治(本质是一个创建二叉树搜索树的过程)
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
let testArray = [3, 1, 2, 5, 6, 4]; let quickSort = (array) => { if (array.length < 2) return array; let leftArray = []; let rightArray = []; let baseDigit = array[0]; array.forEach(element => { if (element < baseDigit) { leftArray.push(element); } else if (element > baseDigit) { rightArray.push(element); } }); return quickSort(leftArray).concat(baseDigit, quickSort(rightArray)) }; quickSort(testArray);
二、插入排序
let arr = [5,3,7,2,6]; //插入排序 function insertSort(arr) { for (let i = 1; i < arr.length; i++) { //当前要处理的数 let temp = arr[i]; let j = i - 1; while (j >= 0 && arr[j] > temp) { //如果前一个数大于后一个数,将前一个数往后移一位 arr[j + 1] = arr[j] j-- } //此时的j是要处理的数排序后应该在的位置 arr[j+1] = temp } return arr; } console.log("插入排序arr", insertSort(arr))

浙公网安备 33010602011771号