之前有一个误区 以为稳定性指的是同样的输入 时间是否是稳定的。但是这样是错误的,实际上应该是:
如果具有相等键的两个对象在排序输出中出现的顺序与它们在要排序的输入数组中出现的顺序相同
可以做到稳定排序的算法:
归并排序,冒泡排序,直接插入排序,折半插入排序
不可以的:
快速排序(因为partition不稳定)
堆排序(交换的过程不在乎相等的值)
希尔排序
直接选择排序
为什么要追求稳定性呢?
比如有年龄 姓名 身高 的信息
17 小明 170
17 小王 175
19 小李 174
这样我先排序身高后再排序年龄 还是会保持身高的顺位信息
在值相等的情况下相对次序保持原来的