对序列 [7,2,9,4,3] 做快速排序,明确采用 Lomuto 划分法:以末元素 3 为枢轴,从左到右扫描,把不大于枢轴的元素移到左侧,最后把枢轴放到分界位置。第一趟划分后的序列是()。
枢轴为 3。扫描 7 时不移动;扫描 2 时把它交换到左侧,序列暂为 [2,7,9,4,3];9 和 4 都大于 3。扫描结束后,将枢轴 3 与左侧分界后的 7 交换,得到 [2,3,9,4,7]。
选项分析
正确。枢轴3位于最终位置,左侧只有2,右侧9、4、7均大于3。
枢轴左侧仍有2,说明3没有放到本趟划分后的正确位置。
枢轴右侧出现了小于枢轴的元素2,不满足划分条件。
这是完全排序结果,不是一趟 Lomuto 划分的直接结果。
本题为什么容易错
快速排序存在多种合法划分实现,所以不写清枢轴位置和扫描规则的题目可能有多个中间序列。本题特意限定 Lomuto 法,答题时必须按指定算法模拟,不能拿自己熟悉的左右指针法套。
简短答案
以末元素为枢轴时,快速排序第一趟划分后的序列是什么,正确答案是 A([2,3,9,4,7])。枢轴为 3。扫描 7 时不移动;扫描 2 时把它交换到左侧,序列暂为 [2,7,9,4,3];9 和 4 都大于 3。扫描结束后,将枢轴 3 与左侧分界后的 7 交换,得到 [2,3,9,4,7]。
易混淆概念对比表
| 概念 | 本题判断 | 区别要点 | 记忆提示 |
|---|---|---|---|
| [2,3,9,4,7] | 本题正确答案 | 正确。枢轴3位于最终位置,左侧只有2,右侧9、4、7均大于3。 | 看到题干核心场景时优先联想到它 |
| [3,2,9,4,7] | 本题干扰项 | 枢轴左侧仍有2,说明3没有放到本趟划分后的正确位置。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| [2,7,3,4,9] | 本题干扰项 | 枢轴右侧出现了小于枢轴的元素2,不满足划分条件。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| [2,3,4,7,9] | 本题干扰项 | 这是完全排序结果,不是一趟 Lomuto 划分的直接结果。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
本题易混淆选项怎么区分
- [3,2,9,4,7]:枢轴左侧仍有2,说明3没有放到本趟划分后的正确位置。
- [2,7,3,4,9]:枢轴右侧出现了小于枢轴的元素2,不满足划分条件。
- [2,3,4,7,9]:这是完全排序结果,不是一趟 Lomuto 划分的直接结果。
知识点详解
Lomuto 划分通常选择末元素为枢轴,用一个边界维护已发现的小元素区间。扫描完成后,将枢轴与边界后的第一个元素交换。枢轴由此到达最终位置,随后对左右子序列递归。不同划分法的中间排列可能不同,但都要满足分区性质。
备考速记
一趟只定一个轴,左右分开不等于左右排好。
Lomuto划分 在排序算法场景中的作用
Lomuto划分在本题中的核心价值,是解决“对序列 [7,2,9,4,3] 做快速排序,明确采用 Lomuto 划分法:以末元素 3 为枢轴,从左到右扫描,把不大于枢轴的元素移到左侧,最后把枢轴放到分界位置。第一趟划分后的序列是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。
同类题怎么考
- 给定枢轴和划分方法求一趟结果
- 比较快速排序最好与最坏时间复杂度
- 判断快速排序是否稳定及递归栈空间
Lomuto划分 在软件设计师软考中的考法
软考选择题通常不会只考概念定义,还会把Lomuto划分放到排序算法场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。
解题思路
先别追求一次排完。枢轴 3 的任务只是找自己的最终位置。比 3 小的只有 2,所以 2 被推到最左边;随后把 3 放在 2 后面。右边的 9、4、7 暂时什么顺序都可以,下一轮递归才处理。
考点定位
快速排序的一趟划分只保证枢轴就位、左侧不大于枢轴、右侧大于枢轴,并不保证左右两段内部已经有序。题目必须先确认采用哪种划分规则。
易错提醒
- 把第一趟划分误认为整个序列已经排好
- 扫描到小元素时只移动指针却没有交换
- 最后忘记将枢轴换到分界位置
备考提示
- 草稿上单独标出边界指针 i 和扫描指针 j,每次遇到不大于枢轴的元素才移动 i。
- 先检查结果是否满足‘左小、轴定、右大’,再核对具体交换过程。
你可能还想了解
- 快速排序第一趟后是否完全有序?
- Lomuto划分和Hoare划分有什么区别?
- 快速排序枢轴最后放在哪里?
- 快速排序最坏情况什么时候出现?
本文小结
采用末元素 3 为枢轴的 Lomuto 划分,先把 2 移到左侧,再把枢轴放到分界位置,结果为 [2,3,9,4,7]。