从分区这一步讲清快速排序为什么平均是 O(n log n)、又为什么会退化成 O(n²),给出 Lomuto 与 Hoare 两种分区、三数取中与随机基准的可编译 Java 代码,并说明递归栈深度、小数组切插入排序以及 JDK 双轴快排的这些取舍。
从分治的两个动作出发讲清归并排序的自顶向下与自底向上实现,说透合并时一个 <= 为何决定稳定性、临时数组为何只分配一次,并延伸到外部排序与 JDK 的 TimSort。