Skip to content

2013年 408 数据结构 第 11 题

数据结构2013年选择题2分

题目

对给定的关键字序列 110, 119, 007, 911, 114, 120, 122 进行基数排序,则第 2 趟分配收集后得到的关键字序列是()。

错因

A

桶 1 的内部顺序写错了。第 2 趟分配时,桶里元素按"第 1 趟收集后的顺序"进入(不是原始序列),所以桶 1 应该按 110, 911, 114, 119(来自第 1 趟收集结果 D 中的相对顺序)入桶;选 A 的人按原始序列顺序 110, 119, 114, 911 入桶,违反了基数排序的稳定性——每一趟桶内顺序必须沿用上一趟的相对位置,不能回到原始序列。

B

在 A 的错误基础上还把桶 2 的顺序也搞反,写成 122, 120。第 1 趟收集后桶 2 的相对顺序是 120 在 122 前面(120 个位 0 → 桶 0;122 个位 2 → 桶 2,但桶 2 只有 122 一个;继续看……实际上 120 和 122 是各自分到不同的桶里,到第 2 趟看十位时才一起进桶 2,相对顺序按上一趟收集结果是 120 先于 122)。选 B 的人完全没遵循"稳定排序"。

D

把"第 1 趟结果"误当成了"第 2 趟"答案。D 序列就是按个位分配收集的产物——选 D 的人少做了一趟,停在了第 1 趟终点。

总解析

LSD(低位优先)基数排序流程:从最低位开始,每一趟做一次"按当前位分桶 → 按桶序号收集",重复直到最高位。本题数据是 3 位数,共需 3 趟(个、十、百)。

关键稳定性:每一趟入桶时,元素按上一趟的相对顺序排入;同一桶内顺序不变。这是基数排序正确性的核心。

第 1 趟:按个位分配

原始序列:110, 119, 007, 911, 114, 120, 122

元素(按原序入桶)
0110, 120
1911
2122
4114
7007
9119

收集(按桶号 0→9 顺序拼接):

110, 120, 911, 122, 114, 007, 119   ← 这是第 1 趟结果(也是选项 D)

第 2 趟:按十位分配(输入 = 第 1 趟收集结果)

依次扫描 110, 120, 911, 122, 114, 007, 119:

十位入桶
1101桶 1
1202桶 2
9111桶 1
1222桶 2
1141桶 1
0070桶 0
1191桶 1

各桶内容(按入桶顺序,严格沿用上一趟相对顺序):

元素
0007
1110, 911, 114, 119
2120, 122

收集(按桶号 0→9 顺序):

007, 110, 911, 114, 119, 120, 122

正好对应选项 C。

检查信号:第 2 趟结束后,整个序列对"末两位"是有序的——007(007)、110(10)、911(11)、114(14)、119(19)、120(20)、122(22)——确实按末两位升序,自洽。

最终答案是 C

最后更新:

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

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