稳定排序
概述
稳定排序(Stable Sort) 是指在排序过程中保持相等元素之间原始相对顺序的排序算法。稳定性在某些应用场景中至关重要,例如多关键字排序。
定义
稳定排序
对于输入序列中任意两个值相等的元素 和 ( 且 ),如果排序后 仍然位于 之前,则称该排序算法是稳定的。
形式化定义:排序算法是稳定的,当且仅当对于所有满足 且 的输入,排序后 的输出位置仍在 之前。
核心性质
常见排序算法的稳定性
为什么稳定性重要?
- 多关键字排序:当需要按多个关键字排序时(如先按姓、再按名),稳定性保证第二趟排序不会破坏第一趟排序的结果。
- 基数排序的前提:基数排序 的正确性依赖于子排序算法的稳定性。
- 保持关联数据:当排序的元素携带附加信息时,稳定性保证附加信息与元素的对应关系不被打乱。
不稳定排序的补救
不稳定排序算法(如快速排序)可以通过扩展键值(将原始位置作为次要键值)来模拟稳定性,但这会增加额外开销。
章节扩展
第8章:线性时间排序
稳定性概念在第8章尤为重要,因为 计数排序 和 基数排序 的正确性和高效性都依赖于稳定性。