Skip to content

2011年 408 数据结构 第 10 题

数据结构2011年选择题2分

题目

为实现快速排序算法,待排序序列宜采用的存储方式是()

错因

B

把"快速排序"和"哈希查找快"做了错误联想。散列存储是为查找优化的(O(1) 期望命中),但元素散布无序、不存在"按下标分区"的概念——快排的 partition 操作根本无法在散列表上落地。

C

忘了快排的核心是"按下标随机访问 + 原地交换"。链表只支持顺序遍历,没有 O(1) 随机访问;low、high 指针往中间走的每一步都要 O(n) 扫到位,partition 直接退化到 O(n²)。

D

把"高效访问"和"索引存储"画等号。索引存储(如索引顺序文件)是为按索引项快速查找设计的,原地交换数据成本高、还要同步维护索引——快排在这种结构上慢一个数量级。

总解析

快排的核心是 partition——以枢轴为界,把数组分成两半。这一步需要:

  1. 按下标随机访问元素(low、high 指针从两端往中间走,每步 O(1))
  2. 原地交换元素(swap 操作 O(1))

只有顺序存储(数组)能在 O(1) 时间内同时满足这两点:

存储方式随机访问原地交换适合快排?
顺序存储O(1)O(1)
链式存储O(n)改指针 O(1),但定位 O(n)✗ 整体退化
散列存储无序,无下标概念
索引存储经过索引项需同步维护索引

最终答案是 A

最后更新:

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

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