快速排序的核心思想与实现?最坏情况是什么?

思想:分治法。选「基准 pivot」,把小于基准的放左、大于的放右,再递归处理左右两半。

function quickSort(arr, lo = 0, hi = arr.length - 1) {
  if (lo >= hi) return arr
  const pivot = arr[hi]
  let i = lo
  for (let j = lo; j < hi; j++) {
    if (arr[j] < pivot) { [arr[i], arr[j]] = [arr[j], arr[i]]; i++ }
  }
  [arr[i], arr[hi]] = [arr[hi], arr[i]]   // pivot 归位
  quickSort(arr, lo, i - 1)
  quickSort(arr, i + 1, hi)
  return arr
}

同分类其他题目