js排序算法——快速排序

169 阅读1分钟

快速排序

1.选择一个基准元素(pivot)

2.小于基准的元素移到左边,大于基准的元素移到右边

3.左右子集递归1、2两步,直到所有子集只剩下一个元素

sort

完整代码实现


const quicksort = arr => {
  if (arr.length <= 1) return arr
  let pivot = arr[0]
  let left = []
  let right = []
  for (let i = 1; i < arr.length; i++) {
    arr[i] < pivot ? left.push(arr[i]) : right.push(arr[i])
  }
  return quicksort(left).concat(pivot, quicksort(right))
}

性能

时间复杂度:平均时间复杂度O(nlogn)、最好情况O(nlogn)、最差情况O(n^2)

空间复杂度:O(logn)

稳定性:不稳定