Skip to content

2019年 408 数据结构 第 7 题

数据结构2019年选择题2分

题目

选择一个排序算法时,除算法的时空效率外,下列因素中,还需要考虑的是( )。

Ⅰ. 数据的规模 Ⅱ. 数据的存储方式 Ⅲ. 算法的稳定性 Ⅳ. 数据的初始状态

错因

A

只盯到稳定性这一个最常被强调的"软"指标,忽略了规模、存储方式、初始状态对实际算法选择的影响也都很大。考研题里"稳定性"出现频次高,所以学生容易先入为主只勾Ⅲ。

B

只考虑硬件相关的"硬"指标——规模和存储方式,把稳定性和初始状态当成"次要因素"。但实际工程里,二级排序键的稳定性、近乎有序数据触发插入排序的最佳路径都是真实场景。

C

漏了 Ⅰ。可能错把"规模"当成已经被"时空效率"涵盖(题干已明说"除时空效率外"),属于审题不仔细。

总解析

逐条分析

  • Ⅰ. 数据的规模:n 很小时(如 n < 50),简单排序(直接插入、冒泡)的常数因子小、实际反而更快;n 大时才用 的高级排序(快排、归并、堆)。规模决定算法是该选低复杂度还是低常数。✓

  • Ⅱ. 数据的存储方式:顺序存储和链式存储能用的算法不同。例如快速排序需要随机访问下标,在链表上效率退化;归并排序在链表上反而无需额外空间,更友好。✓

  • Ⅲ. 算法的稳定性:当排序键有重复且要求"原相对顺序保持"(如先按部门后按姓名的二级排序),必须用稳定算法(归并、冒泡、直接插入),不能用不稳定的(堆排、快排、简单选择、希尔)。✓

  • Ⅳ. 数据的初始状态:近乎有序数据上插入排序接近 最佳;逆序数据上简单快排(首元素作 pivot)退化为 ;不同初始状态对算法的实际表现影响巨大。✓

四项全都要考虑。最终答案是 D

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题