Appearance
题目
使用快速排序算法对含 N(N ≥ 3) 个元素的数组 M 进行排序,若第一趟排序将除枢轴外的 N-1 个元素划分为 P 和 Q 两个部分,则下列叙述中,正确的是( )。
错因
B
把"块间有序"误读成"块内有序"。一趟划分只把元素按"≤ 枢轴 / ≥ 枢轴"分成两堆,P 内部、Q 内部仍然是乱的——否则一趟就排好了,递归就没意义了。混淆了"分区"步骤和"排序"结果。
C
把"理想情况"当成必然性质。划分大小完全取决于枢轴值和原数据分布——最坏情况枢轴是当前段的最大或最小元素,一侧可能完全为空。这正是快排在已排序数据上退化为 的根因。"大致相等"只是平均情况下的统计期望,不是任何一趟的硬性保证。
D
忘了划分不去重。划分只保证 P 中元素 枢轴 Q 中元素,原数组里的重复元素(包括与枢轴相等的元素)会按实现策略落到 P 或 Q 中,并不会被剔除。比如数组 [3, 5, 3, 7, 5] 不管怎么选枢轴,划分后两侧都可能含相等元素。
总解析
快速排序"一趟划分"只保证一件事:
P 中所有元素 枢轴 Q 中所有元素
这就是"块间有序"——P 整体小于 Q 整体。但 P 内部、Q 内部仍是乱序的,所以接下来要递归对 P 和 Q 各自再做快排。
逐项核对:
- A ✓ 块间有序,正是划分定义。
- B ✗ 块内未排序,递归还没做。
- C ✗ 大小靠枢轴和数据决定,最坏情况一侧为空。
- D ✗ 划分不去重,重复元素仍存在于两块中。
最终答案是 A。