排序的稳定性
指相同元素在排序后能否做到相对位置保持不变
比如在不同班级中有不同年龄的学生
首先按照年龄排序,然后按照班级进行排序,如果使用的排序算法是稳定的,则会出现在一个班级中的学生按照年龄进行排序
选择排序
做不到稳定
如[3,3,3,1,3,3],第一步先找最小值和0位置上的数交换,破坏了稳定性
冒泡排序
是相邻位置上的数比较,如果使相邻的数相等时不交换,则稳定
插入排序
同冒泡排序,相等时不交换,则维持稳定
归并排序
是否稳定看merge合并时怎么处理相等的数,当左右两边相等时先拷贝左边的数则稳定
快速排序
做不到稳定性
不是相邻位置交换,会破坏稳定性
堆排序
变成大根堆时就会破坏稳定性
桶排序
先进先出,相对次序不变