第07章 快速排序 — 章节汇总

章节概览

本章系统介绍了快速排序(Quicksort)——实践中最常用的比较排序算法之一。快速排序由 Tony Hoare 于 1960 年发明,采用分治策略,通过分区(Partition)操作将数组划分为两个子数组,然后递归排序。尽管最坏情况运行时间为 ,但其期望运行时间为 ,且常数因子极小,加之原地排序和良好的缓存局部性,使其成为大多数标准库排序实现的首选。本章还介绍了随机化快速排序,通过随机选择枢轴(pivot)来避免最坏情况,并给出了期望运行时间的严格数学证明。


7.1~7.2 快速排序的描述与性能直觉

小节核心主题关键结论
7.1 快速排序的描述QUICKSORT/PARTITION 伪代码与正确性PARTITION 耗时 ;循环不变式证明正确性
7.2 快速排序的性能最坏/最好/平衡分区分析最坏 ;最好 ;平衡

核心思路:快速排序的分治三步为:分解(PARTITION 将数组以枢轴为界分为两部分)、解决(递归排序两个子数组)、合并(无需操作,因为分区已保证有序)。PARTITION 的循环不变式确保每次迭代后,枢轴左侧元素 枢轴 右侧元素。性能取决于分区的平衡程度——最坏情况(每次产生 0 和 n-1 的分区)退化为 ,而平衡分区(每次近似平分)达到


7.3~7.4 随机化版本与严格分析

小节核心主题关键结论
7.3 快速排序的随机化版本RANDOMIZED-PARTITION/QUICKSORT随机选枢轴,期望性能不依赖输入
7.4 快速排序的分析最坏 + 期望 严格证明指示器随机变量方法,期望比较次数

核心思路7.3 快速排序的随机化版本 通过在 PARTITION 前随机选择枢轴并交换到末尾,将算法的性能保证从”对特定输入分布的期望”转变为”对所有输入的期望”。7.4 快速排序的分析 给出了严格的数学证明:最坏情况使用代入法证明 ;期望运行时间使用指示器随机变量(与5.2 指示器随机变量相同的技术),设 表示第 小与第 小元素是否被比较,通过分析比较发生的概率条件,得到期望比较次数


本章核心知识点

关键定义

概念定义出处
分区(Partition)将数组以枢轴为界重排,使得左侧 枢轴 右侧7.1 快速排序的描述
枢轴(Pivot)PARTITION 选择的参考元素,CLRS 使用 7.1 快速排序的描述
随机化分区随机选择枢轴,使分区平衡性不依赖输入7.3 快速排序的随机化版本

关键过程与复杂度

过程功能最坏时间期望时间
PARTITION 为枢轴分区
RANDOMIZED-PARTITION随机选枢轴后分区
QUICKSORT确定性快速排序取决于输入
RANDOMIZED-QUICKSORT随机化快速排序

核心定理

编号内容出处
定理 7.1快速排序最坏情况运行时间为 7.4 快速排序的分析
定理 7.2当所有元素互不相同时,RANDOMIZED-QUICKSORT 的期望比较次数 7.4 快速排序的分析
推论 7.1RANDOMIZED-QUICKSORT 的期望运行时间为 7.4 快速排序的分析

与前序章节的知识关联

前序章节关联方式
第2章 入门分治法(2.3节)是快速排序的设计基础;插入排序用于小分区优化
第4章 分治策略代入法(4.3节)用于最坏情况证明;主定理用于最好/平衡情况分析
第5章 概率分析指示器随机变量(5.2节)用于期望运行时间证明;随机化策略(5.3节)与 RANDOMIZED-PARTITION 对比
第6章 堆排序堆排序 vs 快速排序的工程对比;Introsort 结合两者优势

学习路线

第7章学习路径:
  7.1 快速排序的描述(算法设计,建立直觉)
    → 7.2 快速排序的性能(性能直觉,四种场景分析)
      → 7.3 随机化版本(解决最坏情况问题)
        → 7.4 快速排序的分析(严格数学证明)

学习建议

本章是算法分析中”直觉先行、严格证明跟进”的典型范例。建议按 7.1 → 7.2 → 7.3 → 7.4 的顺序学习。7.1 的 PARTITION 循环不变式是理解快速排序的关键,务必彻底掌握。7.4 的期望运行时间证明是全书的数学分析高峰之一,需要扎实的第5章概率分析基础。如果对指示器随机变量不熟悉,建议先复习 5.2 指示器随机变量

快速排序