快速排序在比较模型理路比较排序Comparison sorting仅通过元素两两比较确定排列次序的排序模型。中先按枢轴划分,再用分治法理路分治法Divide and conquer把问题分成较小同类子问题,递归求解后合并结果的算法设计范式。递归排序两侧。本页固定一个允许重复键的三路版本,以免把不同分区算法的边界和复杂度混用。
若键是一字整数,整数排序理路超越比较下界的整数排序integer sorting · non-comparison integer sorting通过有限整数宇宙、按位操作和分桶,说明排序复杂度可突破比较模型的 n log n 下界。可以利用数位和字操作,已经改变了本页的比较接口。数据主要驻留外存时,外存排序理路外存排序External-memory sorting在 I/O 模型中以块传输而非 CPU 比较次数衡量海量排序。还要分析块传输;数组内的原地分区不会自动带来最优 I/O 界。
参考资料
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,Chapter 7:分区与随机快速排序。
Robert Sedgewick、Kevin Wayne,Algorithms, 4th ed., Addison-Wesley, 2011,§2.3 Quicksort 与 Quick3way.java:重复键、三路分区与边界;本页改用半开区间。
Donald E. Knuth, The Art of Computer Programming, Vol. 3: Sorting and Searching, 2nd ed., Addison-Wesley, 1998,§5.2.2。