模拟卷 数据结构 排序算法插入排序 选择题
第 10 题

数据序列(2,1,4,9,8,10,6,20)只能是( )排序的两趟排序后的结果。

A. 快速排序 B. 冒泡排序 C. 选择排序 D. 插入排序

排序算法 插入排序

[tag_link]

正确答案:A

首先分析序列(2,1,4,9,8,10,6,20)作为各排序算法两趟后的可能性。 冒泡排序两趟后,最大和第二大元素应位于末尾,但序列末尾为 6 和 20,第二大的 10 不在倒数第二,排除 B。 选择排序两趟后,最小和第二小元素应位于前两位,但序列前两位为 2 和 1,而非 1 和 2,排除 C。 插入排序两趟后,前两个元素应有序,但序列前两位为 2 和 1(无序),排除 D。

快速排序的可能在于:序列中元素 4 满足左边(2,1)均小于 4,右边(9,8,10,6,20)均大于 4,符合快速排序一趟分区后枢轴就位的特征。 考虑两趟操作:第一趟以最后一个元素 20 为枢轴进行分区,由于 20 最大,分区后序列不变; 第二趟对左子序列(2,1,4,9,8,10,6)以 4 为枢轴进行分区,使 4 就位,且左子序列保持为 2,1,4,9,8,10,6,从而得到当前序列。 尽管枢轴选择可能非标准(如选中间元素),但快速排序允许不同策略,而其他算法均不匹配,因此 A 正确。