我不明白稳定的算法定义

时间:2013-05-09 12:49:42

标签: algorithm sorting

  

在计算机科学中,稳定的排序算法会保留具有相同键的记录顺序。

我只是不明白为什么某些排序算法是稳定的而其他排序算法没有。基本排序算法对int数组的项进行排序。如果我创建一个类或结构,并且我使用相同的算法考虑交换整个对象,并选择按键排序,按年龄ecc,那么每个算法都可以保留记录的顺序!

我想我错过了这个定义。

非常感谢。

1 个答案:

答案 0 :(得分:10)

假设你有一个如下所示的数组:

a = [5, 4, 2a, 2b, 1]

ab只是表示前2(2a)位于第2(2b)之前。在稳定的排序算法中,结果将是:

a_stable = [1, 2a, 2b, 4, 5]

也就是说,元素的相对顺序没有改变 - 2a在原始数组中位于2b之前,并且它在排序数组中保持这种状态

使用非稳定算法,结果可能是:

a_nonstable = [1, 2b, 2a, 4, 5]

这仍然是正确排序的,只是相对于它们在原始未排序数组中的位置的位置现在已经改变了。