# 快速排序(稳定)

时间复杂度:O(nlog2n)

# 思想

选中一个基准值,遍历原数组与其比较,按小左大右进行划分,再分别进行 递归。直到还剩一个元素时返回拼接。

const quickSort = arr => arr.length <= 1 ? arr :
      quickSort(arr.filter(x => x < arr[0]))
      .concat(arr.filter(x => x === arr[0]))
      .concat(quickSort(arr.filter(x => x > arr[0])))
1
2
3
4

# 大致步骤

  • 选择一个元素作为“基准”(pivot),
  • 所有小于“基准”的元素,移到“基准”的左边;所有大于“基准”的元素,都移到“基准”的右边
  • 对“基准”左、右两个子集,不断重复第一、二步,直到所有子集只剩下一个元素为止
更新时间: 4/18/2020, 11:41:46 PM