408真题解析-2009-10-数据结构-排序

一 真题2009-10

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

A. 冒泡排序

B. 插入排序

C. 选择排序

D. 二路归并排序

二 读题

本题是根据第二趟排序结果反推排序算法,主要根据排序算法的特征来判断。

三 哔哔详解

3.1 解题思路

掌握每种算法在"第K趟"后序列的典型特征,然后反向推理。本题采用逐个选项分析;

3.2 逐个选项分析

冒泡排序和选择排序 每趟会将未排序数据中最大或最小的数放在最左或最右边,并且严格按递增或递减的相对位置排列,题中最大数23,最小数4 都不在两端,故排除 A,C;

二路归并排序

归并排序原理(自底向上):

  • 第1趟:两两归并 → 子数组长度 = 2 → 每2个元素有序
  • 第2趟:四四归并 → 子数组长度 = 4 → 每4个元素内部有序

第 k 趟后,数组被划分为若干长度为 2k 的有序段

第2趟(k=2)后:

  • 4 个元素 应构成一个内部有序的子数组

给定序列分组(每4个):

  • 11, 12, 13, 7\] → **不是有序**(7 \< 13)

所以不符合归并排序第2趟的特征,故排除D

插入排序插入排序原理:

  • 第 i 趟(i 从 1 开始):将第 i+1 个元素插入到前面已排序的子数组中
  • 前 i+1 个元素在第 i 趟后是有序的

关键性质插入排序的第 k 趟后,前 k+1 个元素是有序的(且是原数组中前 k+1 个元素的排序结果)

验证:

  • 第 1 趟后:前 2 个元素有序
  • 第 2 趟后:前 3 个元素有序

给定序列:[11, 12, 13, 7, 8, 9, 23, 4, 5]

→ 前 3 个:11, 12, 13 ------ 有序! 故选B

四 参考答案

参考答案B

五 考点精析

5.1 考点1 各排序算法"趟"的定义与特征

算法 第 k 趟后特征
插入排序 前 k+1 个元素有序(来自原数组前 k+1 个)
冒泡排序 末尾 k 个元素是最大 k 个,且有序
选择排序 前 k 个元素是最小 k 个,且有序
归并排序(自底向上) 每2^k 个元素构成有序段(2的k次方)

六 考点跟踪

暂无

说明 :本文内容基于公开资料整理,参考了包括但不限于《数据结构》(严蔚敏)、《计算机操作系统》(汤小丹)、《计算机网络》(谢希仁)、《计算机组成原理》(唐朔飞)等国内高校经典教材,以及其他国际权威著作。同时,借鉴了王道、天勤、启航等机构出版的计算机专业考研辅导系列丛书 中的知识体系框架与典型题型分析思路。文中所有观点、例题解析及文字表述均为作者结合自身理解进行的归纳与重述,未直接复制任何出版物原文。内容仅用于学习交流,若有引用不当或疏漏之处,敬请指正

相关推荐
TracyCoder12312 小时前
LeetCode Hot100(6/100)——15. 三数之和
算法·leetcode
bubiyoushang88812 小时前
基于传统材料力学势能法的健康齿轮时变啮合刚度数值分析
人工智能·算法
星火开发设计12 小时前
const 指针与指针 const:分清常量指针与指针常量
开发语言·c++·学习·算法·指针·const·知识
闻缺陷则喜何志丹12 小时前
【树 链 菊花】P10418 [蓝桥杯 2023 国 A] 相连的边|普及+
c++·算法·蓝桥杯···菊花
ygklwyf13 小时前
JPRS编程竞赛2026#1(AtCoder初学者竞赛442)
c++·算法·模拟
学嵌入式的小杨同学13 小时前
【嵌入式 Linux 实战 1】Ubuntu 环境搭建 + 目录结构详解:嵌入式开发入门第一步
linux·c语言·开发语言·数据结构·vscode·vim·unix
老鼠只爱大米13 小时前
LeetCode经典算法面试题 #21:合并两个有序链表(迭代法、原地合并法等多种实现方案详解)
算法·leetcode·链表·优先队列·迭代法·合并两个有序链表·原地合并
源代码•宸13 小时前
Leetcode—47. 全排列 II【中等】
经验分享·后端·算法·leetcode·面试·golang·深度优先
wen__xvn13 小时前
基础算法集训第20天:Dijkstra
算法·图论
Ada's13 小时前
【计算机基础系列】001:计算机科学与技术
数据结构