Appearance
题目
下列排序算法中,不稳定的是( )。
I. 希尔排序
II. 归并排序
III. 快速排序
IV. 堆排序
V. 基数排序
错因
A
把归并排序当成不稳定。归并的合并步骤"两边相等时取左边"是稳定算法的标准实现,归并排序是稳定的。把它和"分治"或"基于比较"挂钩想成不稳定,是混淆了"分治算法"与"稳定性"两件不相关的事。
B
错认了归并的稳定性,又错把基数排序当成不稳定。基数排序按位逐轮分配 + 收集,每一轮的子排序必须是稳定的(一般用计数排序),整个基数排序也就是稳定的——这是它能正确从低位到高位逐位排序的前提。
D
错把基数排序当不稳定(同 B),同时漏掉了希尔排序的不稳定性。希尔排序用"分组直接插入",不同组之间的相等元素相对顺序在最终合并里可能被破坏——是经典不稳定算法。
总解析
稳定性定义:排序前两个相等的关键字 (),排序后仍保持 在 之前 → 稳定;否则不稳定。
逐项判断
| 排序 | 稳定性 | 关键原因 |
|---|---|---|
| I 希尔 | 不稳定 | 跨组比较和插入,相同元素在不同组里被分开处理后相对位置可能反转 |
| II 归并 | 稳定 | 合并时相等元素优先取左半边 |
| III 快排 | 不稳定 | 划分时与枢轴左右交换的元素可能跨过相等元素 |
| IV 堆排 | 不稳定 | 建堆和调整时大幅度跨越交换,相等元素相对顺序乱掉 |
| V 基数 | 稳定 | 每位排序使用稳定的计数 / 桶排序 |
记忆口诀:408 范围内"快希堆 + 选(直接选择)" 不稳定,其余稳定。
不稳定的有 I、III、IV。
最终答案是 C(仅 I、III、IV)。
格式调整说明:原题干 IV 堆排序V 基数排序 中间漏了空白,已修复为分行。