快速排序的js实现

该方法的基本思想是:

1.先从数列中取出一个数作为基准数。

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。

var quickSort = function(arr) {
  if (arr.length <= 1) { return arr; }
  var pivotIndex = Math.floor(arr.length / 2);
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
  for (var i = 0; i < arr.length; i++){
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
};

ES6的实现

function quickSort(arr) {
    if (!arr.length) {
        return []
    }
    const [pivot,...rest] = arr;
    return [
        ...quickSort(rest.filter(item => item < pivot)),
        pivot,
        ...quickSort(rest.filter(item => item >= pivot))
    ]
}

https://blog.csdn.net/morewindows/article/details/6684558
https://www.cnblogs.com/Bonnie3449/p/9221039.html
https://juejin.im/post/5966f57051882568b20dc3e1#heading-3

posted @ 2019-07-16 00:45  樱风凛  阅读(287)  评论(0编辑  收藏  举报