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

原文地址:https://www.cnblogs.com/liyongquan/p/9134634.html