算法学习(7):排序算法稳定性问题
排序算法总结
排序稳定性
概念:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。
选择排序
做不到稳定性
冒泡排序
可以做到,相邻两个数相等时不交换
插入排序
可以做到,相邻两个数相等时不交换
归并排序
可以做到,merge时,左右两边的数相等时,先拷贝左边的数
快速排序
做不到稳定性,partition过程导致的
堆排序
做不到稳定性,第一步把整个数组变成大根堆时就已经破坏了稳定性
不基于比较的排序
可以轻易地做到稳定性,因为放桶的时候是先进先出