稳定性指的是原本排在前面的元素,排序后仍然保持在前面,如下,第一个5和第二个5如果是稳定排序的话,两者之间的相对位置仍然保持不变。
待排序的数组:3,1,9,5,5,8,4。把第一个5记作A,第二个5记作B。
如果是稳定排序,那么排序后结果为:1,3,4,A,B,8,9
如果是不稳定排序,那么排序后结果为:1,3,4,B,A,8,9
这点看起来好像没啥不一样的,因为反正两个元素值是相同的,但是如果你要排序的元素不是单纯的数值呢?比如是复杂的数据类型呢?就比如{ID,体重},然后你先排序的是按照ID,相同ID的再根据体重来排序?
待排序数组:
ID: 3,1,9,5,5,8,4
体重:1,2,6,3,7,2,5
如果是不稳定排序,同理,把第一个5定义是A,第二个5定义为B,排序后结果:
ID: 1,3,4,B,A,8,9
体重: 2,1,5,7,3,2,6
那么现在A,B其实是相同的,但是我们现在还要根据第二个key来排序,也就是体重,所以如下这个时候就发现了,不稳定的排序造成了两次无意义的交换,对资源造成了浪费。
ID: 1,3,4,A,B,8,9
体重: 2,1,5,3,7,2,6