Skip to content

2026年 408 数据结构 第 10 题

数据结构2026年选择题2分

题目

现有 名学生的成绩记录,每位学生的记录包含两门课程的成绩:课程 1(记为 )和课程 2(记为 )。

排序规则如下:

  1. 首先,依据 成绩升序排列;
  2. 若两名学生的 成绩相同,则依据其总分(即 )升序排列。

请从下列排序算法中,选择最适合实现上述需求的算法()。

错因

B

把"快排适用于一切排序"当万能膏药,没注意到快排是不稳定的——当 相同时,快排打乱原有 顺序,无法天然保证总分升序。要在快排里实现,必须自定义复合比较函数(先比 ,再比总分),但题目问的是"最适合",而专门处理多关键字的算法是基数排序。

C

希尔排序是直接插入的"分组+变增量"优化版,本质上仍是单关键字、不稳定的排序,不天然支持多关键字。同样需要自定义比较函数,且因不稳定无法只对副关键字排一遍就靠稳定性递推。

D

选择排序也是单关键字、不稳定的算法(每趟选最小往前换位会破坏相同 间的相对顺序)。同样不是"多关键字排序"的代表。

总解析

多关键字排序的标准做法:基数排序(LSD,Least Significant Digit 最低位优先)。

具体到本题,主关键字是 、次关键字是总分 ,按 LSD 思路实现:

  1. 第一趟:以"总分"为关键字,对所有记录做稳定排序;
  2. 第二趟:以""为关键字,对上一趟结果再做稳定排序。

为什么这样得到的结果正确:第二趟按 排,稳定性保证 相同时,原有的相对顺序不变——而原有顺序正是第一趟排好的总分升序。两遍稳定排序合起来恰好满足"主关键字 升序、 相同时总分升序"。

其他三个算法的问题

算法是否稳定是否原生支持多关键字
基数排序✓ 稳定✓ LSD 思想
快速排序✗ 不稳定✗ 单关键字
希尔排序✗ 不稳定✗ 单关键字
选择排序✗ 不稳定✗ 单关键字

虽然 B/C/D 通过改写比较函数也能完成任务,但题目问的是**"最适合"**——基数排序是教材里专为多关键字排序设计的算法。

最终答案是 A

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数