408考研逐题详解:2009年第10题

2009年第10题

若数据元素序列 11,12,13,7,8,9,23,4,5 是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是( )。

A. 冒泡排序 \qquad B. 插入排序 \qquad C. 选择排序 \qquad D. 二路归并排序

详解

解答本题,需要熟悉题目中所列出的排序算法的特点,即熟悉相关算法的基本知识,特别是排序的实现过程。

  • 冒泡排序:每一趟都能确定一个元素的最终位置。假如是从小到大排序,第一趟之后,在序列的最末端应该得到最大值;第二趟之后,在序列的倒数第 2 位应该是次大值。若是从大到小排序,则第二趟之后倒数第 1 位是序列中最小值,倒数第 2 位是次小值(如下图示例)。从本题已知序列中可以观察到,不论按何种方式排序,题目中的序列均不符合上述特征。故,题目中已知序列不是冒泡排序所得到的第二趟排序后的结果。

  • 插入排序:每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止。以直接插入排序为例,第 1 趟取出待排序序列中第 1 个关键字,构成一个已排序的序列(记作 L);第 2 趟取出待排序序列中的第 2 个关键字,将此关键字插入到 L 中,且使 L 成为一个有序序列,也就是比较此关键字与 L 中已有关键字进行比较,并找到合适的插入位置。如此,当第 2 趟排序之后,所得到的序列中至少前两个已经排好序的(如下图示例)。从本题中已知序列可以观察到,序列前两个数值 11、12 符合上述特征。故题目中的序列有可能是插入排序的第二趟排序后的结果。

  • 选择排序:每一趟从待排序的记录中选出关键字最小的记录,按顺序放在已排序的记录序列的最后,直到全部排完为止。每趟排序后,已排序的序列中,必然是待排序序列中最小的若干个元素(如下图示例)。以题目所要求,在第二趟排序之后,所得到的序列的前两位,必然是未排序序列中最小的两个,即应该是 4、5。但题目中给出的是 11、 12,由此可知此序列不是选择排序算法所得到的第二趟排序后的结果。

  • 二路归并排序:将两个有序表合并成一个有序表的过程。初始将待排序序列中每个关键词视为一个独立的有序表。第一趟归并,即将第 1 和 第 2 个合并,得到由两个关键字组成的有序序列;以此类推合并后续各个关键字(有序表)。如此,第一趟归并后所得到的序列中,第 1 和 第 2 个关键字组成一个有序表(记为"L1"),第 3 和第 4 个关键字组成一个有序表(记为"L2"),等等。第二趟归并,则将前述 L1 和 L2 两个有序表合并,得到由 4 个关键字组成的新的有序表(如下图示例)。所以,如果用二路归并排序算法,第二趟排序之后所得到的序列中,前 4 个关键字应该是有序的,但是本题中已知序列中的前 4 个关键字"11,12,13,7"不符合此要求。故本题中的序列不是二路归并排序所得到的第二趟排序后的结果。

相关推荐
可编程芯片开发19 分钟前
基于MPPT最大功率跟踪的离网光伏发电系统Simulink建模与仿真
算法
AI科技星28 分钟前
线性算子不是空间映射函数,是全域双螺旋场之间拉伸、旋转、耦合、坍缩的跨空间标准化变换载体《全域数学vs传统数学:人类文明进阶200讲》第80讲
线性代数·算法·矩阵·数据挖掘·回归·乖乖数学·全域数学
米罗篮31 分钟前
矩阵快速幂 (Exponentiation By Squaring Applied To Matrices)
c++·线性代数·算法·矩阵
dream_home840736 分钟前
图像算法模型NPU适配与算法服务实战指南
人工智能·python·算法·npu 图像服务
大鱼>1 小时前
多宠物家庭智能管理平台:云端架构与多设备协同实战
python·算法·iot·宠物
To_OC2 小时前
LC 22 括号生成:刷完这道题,我终于搞懂回溯剪枝了
javascript·算法·leetcode
To_OC2 小时前
LC 39 组合总和:回溯入门必刷题,我踩过的两个坑都在这了
javascript·算法·leetcode
数字杂技师2 小时前
每条推荐都很准,为什么我还是越刷越无聊?
算法
兰令水2 小时前
hot100【acm版】【2026.7.14打卡-java版本】
java·数据结构·算法·leetcode·面试
cpp_25013 小时前
P10098 [ROIR 2023] 地铁建设 (Day 2)
数据结构·c++·算法·贪心·二分答案·洛谷题解