小杨在对“能量晶石”按亮度进行排序。如果两块晶石亮度相同,他希望保持它们在原始序列中的相对顺序。下列关于排序算法稳定性的说法,错误的是( )。
答案C。考点: 排序算法——复杂度与稳定性
【考点】排序算法|稳定性定义|冒泡/插入/选择排序
考纲定位 GESP 四级《C++ 基础》算法模块第 6 章"排序与查找",命题人专门卡住考生对"稳定性"概念的本质理解——这个定义题看似简单,实则区分了背结论与真懂算法的层次。四级要求能辨析四种基础排序(冒泡、插入、选择、快速)的稳定性,这是算法思维从"会写代码"升级到"懂算法性质"的门槛题。
解题思维 看到选项先锚定定义:D 句"相等元素的相对位置不改变"就是稳定性的标准表述,直接锁定。稳定性判断的核心不是"有没有相等元素",而是"相等元素在排序过程中是否被交换过"。A 冒泡排序只在相邻元素"左>右"时交换,相等时不动,稳定;B 插入排序遇到相等元素时选择插入到右侧,原有相等元素不受影响,稳定;C 选择排序每次把最小元素与当前位置交换——即便该最小元素与前面某个元素相等,交换动作也会改变它们的相对位置,必然不稳定。
陷阱拆解 C 选项是最阴险的:它混淆了"选出最小"和"保持稳定"两个概念。命题人故意用"因为每次选出最小元素放在前面"来伪装稳定性,利用考生对选择排序的模糊印象(只记得它快、记得它交换,却记不清交换会破坏顺序)。如果你只背"冒泡稳定、插入稳定"而不理解为什么稳定,就会在 C 上栽跟头。更刁的是,即便你背了"选择排序不稳定",也容易忽略"为什么"——不理解"交换操作破坏相对位置"这个本质,下次遇到快排的不稳定性照样会错。
反命题思维 命题人想考的不是"哪种排序稳定",而是"哪种排序不稳定"。如果把 C 改成"选择排序是不稳定的",这就是送分题;如果把稳定性定义偷换成"排序结果唯一",那就是概念陷阱题。刷到这类题先问自己:它到底在考定义辨析、算法性质、还是考你记住了没记住?答案选 C,因为它是唯一被明确判定为"不稳定"的排序,其他三项要么稳定要么定义正确。