Skip to content

2010年 408 数据结构 第 11 题

数据结构2010年选择题2分

题目

对一组数据 (2, 12, 16, 88, 5, 10) 进行排序,若前三趟排序结果如下:第一趟排序结果:2, 12, 16, 5, 10, 88;第二趟排序结果:2, 12, 5, 10, 16, 88;第三趟排序结果:2, 5, 10, 12, 16, 88,则采用的排序方法可能是()。

错因

B

希尔排序每趟按当前增量分组后分别插入排序,元素移动的位置分散且不规律,不会出现"最大值每趟都沉到末尾"的现象。误选 B 的人可能因为"数据越来越有序"就联想到希尔排序,而忽略了希尔排序中间结果的特征。

C

归并排序每趟按 2 的幂次合并子序列:第一趟相邻 2 个有序,第二趟相邻 4 个有序……第一趟结果应是 (2, 12), (16, 88), (5, 10) 各段内部有序,与题目给出的第一趟结果完全不同。

D

基数排序按位(个位、十位……)重新分配元素,每趟结果按某一数位的大小排列,不会产生"逐趟把最大值推到末尾"的递进现象。

总解析

逐趟观察变化规律:

  • 初始:2, 12, 16, 88, 5, 10
  • 第一趟:2, 12, 16, 5, 10, 88 — 最大值 88 沉到最后
  • 第二趟:2, 12, 5, 10, 16, 88 — 次大值 16 沉到倒数第二(88 已就位)
  • 第三趟:2, 5, 10, 12, 16, 88 — 12 沉到正确位置

每趟扫描相邻元素,把当前最大的未归位元素"冒泡"到末尾——这正是**冒泡排序(起泡排序)**的标志性特征:已归位元素从序列尾部向前逐趟固定。

希尔、归并、基数排序的中间状态均与此模式不符。

最终答案是 A

最后更新:

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

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