面试知识库

快速排序模板:原地排序的经典分治算法#

快速排序(Quick Sort)是典型的分治算法:选一个枢轴(pivot),把数组划分为“小于 pivot / 等于 pivot / 大于 pivot”三段,然后递归排序两侧。

⚡ 速记版模板#

quickSort(nums, 0, nums.length - 1); // 对整个数组区间 [0, n-1] 进行原地快速排序
java

✅ 推荐实现:三路划分(对重复元素更稳)#

三路快排(Dutch National Flag partition)能有效避免大量重复元素导致的退化。

⏱️ 复杂度#

  • 平均时间复杂度:O(n log n)
  • 最坏时间复杂度:O(n^2)(随机 pivot 可显著降低触发概率)
  • 额外空间:递归栈平均 O(log n),最坏 O(n)

⚠️ 易错点#

  • right + 1:nextInt(left, right + 1) 右边界是开区间
  • index <= gt:循环边界写错容易漏处理元素
  • 三路划分里遇到 > pivot 交换到右侧时,index 不能自增(因为换过来的元素还没检查)