小杨在整理一副扑克牌的所有红心扑克牌,使其从小到大排列。他的做法是:最开始抓到第 1 张扑克牌被认为已经排好序;然后抓第 2 张扑克牌,将其插入至有序部分的正确位置;不断循环步骤,每次将新抓到扑克牌插入至有序部分,直至抓完所有扑克牌,这样抓牌结束时就完成了扑克牌的排序。小杨这种整理扑克牌的方式与( )排序的方式最接近。
答案B。稳定排序保持相等元素的原始相对顺序。选择排序在交换时可能改变相等元素的相对位置,因此是不稳定的。
稳定排序的定义:相等元素排序后相对顺序不变。选择排序在交换时可能改变相等元素顺序,因此不稳定。
【考点】插入排序|排序算法过程识别
1. 考纲定位:本题精准命中 GESP 四级《算法与数据结构》模块的排序算法考点。命题人刻意描述"每次抓新牌插入有序部分"这一过程,专门卡住那些只会背"排序算法名称"却不懂其执行流程的考生——他们容易把"排序"这个结果等同于任意排序算法。
2. 解题思维:看到"抓第 1 张已排好序,后续每次插入新牌至正确位置",立刻应想到插入排序的核心特征:维护一个有序子数组,每读入一个新元素就将其插入到该子数组中的合适位置。这与冒泡排序的"相邻交换"、选择排序的"全局极值挑选"、"直接排序"(非标准术语)的过程有本质区别。
3. 陷阱拆解:A 项冒泡排序依靠多轮"相邻元素交换"完成排序,与题目描述的"单次插入"完全不符;C 项选择排序每轮从未排序部分选出极值放置到已排序部分末尾,过程截然不同;D 项"直接排序"并非标准算法名称,属于命题人设置的语义陷阱——若考生只记得"直接插入排序"这个简称,却未理解其过程描述,极易误判。
4. 反命题思维:如果把题目改成"小杨每次从未排序部分选最大牌放到已排序部分末尾",答案就会变成 C;若描述为"相邻两张牌反复交换直到有序",答案就是 A。刷到排序题时先问自己:"命题人展示的是哪种操作序列?"过程比名称更重要。