形式陈述
快速排序选择枢轴,把数组原地划分为不大于与不小于枢轴的区域,再递归排序两侧。一次划分为
极端不平衡导致最坏
直觉
先把一个枢轴放到最终相对位置,并在原数组中把小键和大键分开;性能取决于划分是否持续均衡。
例子与边界
总选首元素处理已排序数组会不断产生
推论与应用
快速排序因缓存局部性和低常数常用于内存排序;工程实现会结合小数组插入排序、三数取中和深度上限,后者形成 introsort 以恢复最坏
参考资料
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,Ch. 7, quicksort, randomized analysis, and partitioning。
- Donald E. Knuth, The Art of Computer Programming, Vol. 3: Sorting and Searching, 2nd ed., Addison-Wesley, 1998,Vol. 3, §5.2.2, sorting by exchanging。