JS算法--快速排序
描述:
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用。快速排序是一种既不浪费空间又可以快一点的排序算法。
步骤:
- 先从数列中取出一个数作为“基准”。
- 分区过程:将比这个“基准”大的数全放到“基准”的右边,小于或等于“基准”的数全放到“基准”的左边。
- 再对左右区间重复第二步,直到各区间只有一个数。
实现:
function quickSort (arr) { if (arr.length <= 1) return arr; const newArr = [...arr]; const cutPointIndex = Math.floor(newArr.length / 2); const cutPoint = newArr.splice(cutPointIndex, 1)[0]; let left = []; let right = []; newArr.forEach((val)=>{ if (val > cutPoint) { right.push(val) } else { left.push(val) } }) return [...quickSort(left), cutPoint, ...quickSort(right)] }
参考:https://segmentfault.com/a/1190000009426421