选择排序是一种不稳定的排序算法,而冒泡排序是一种稳定的排序算法。
比较不同排序算法的核心区别:冒泡(相邻交换)、选择(选最值)、插入(插入有序序列)、归并(分治合并)、快排(划分递归)。
排序稳定性指相等元素排序后相对顺序是否改变。稳定:冒泡、插入、归并。不稳定:选择、快排、堆排。
GESP七级C++第1模块"算法基础"明确要求掌握常见排序算法特性。命题人放这道题,就是要卡住那些只背了"冒泡排序"名字却混淆稳定性的考生——七级考试里,算法稳定性是区分基础与进阶的关键分水岭。
看到"排序算法稳定性"先想定义:若相等元素排序后相对位置不变即为稳定。选择排序每次选最小值放到前面,若数组中有两个相等的数,先出现的会被"跳过"放到后面,后出现的会被提前,相对位置必然改变,故不稳定;冒泡排序只交换相邻且逆序的元素,相等的相邻元素不会交换,相对位置自然保留,故稳定。通法:判断稳定性只需观察"相等元素是否可能改变相对次序",不必模拟完整过程。