在计算机科学中,稳定的排序算法会保留具有相同键的记录顺序。
我只是不明白为什么某些排序算法是稳定的而其他排序算法没有。基本排序算法对int数组的项进行排序。如果我创建一个类或结构,并且我使用相同的算法考虑交换整个对象,并选择按键排序,按年龄ecc,那么每个算法都可以保留记录的顺序!
我想我错过了这个定义。
非常感谢。
答案 0 :(得分:10)
假设你有一个如下所示的数组:
a = [5, 4, 2a, 2b, 1]
a
和b
只是表示前2(2a
)位于第2(2b
)之前。在稳定的排序算法中,结果将是:
a_stable = [1, 2a, 2b, 4, 5]
也就是说,元素的相对顺序没有改变 - 2a
在原始数组中位于2b
之前,并且它在排序数组中保持这种状态
使用非稳定算法,结果可能是:
a_nonstable = [1, 2b, 2a, 4, 5]
这仍然是正确排序的,只是相对于它们在原始未排序数组中的位置的位置现在已经改变了。