我不明白稳定的算法定义

Fra*_*zzi -1 sorting algorithm

在计算机科学中,稳定的排序算法使用相等的密钥保留记录的顺序.

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

我想我错过了这个定义.

非常感谢.

Yuu*_*shi 10

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

a = [5, 4, 2a, 2b, 1]
Run Code Online (Sandbox Code Playgroud)

其中,a并且b只是表示第一个2(2a)在第二个2(2b)之前.在稳定的排序算法中,结果将是:

a_stable = [1, 2a, 2b, 4, 5]
Run Code Online (Sandbox Code Playgroud)

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

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

a_nonstable = [1, 2b, 2a, 4, 5]
Run Code Online (Sandbox Code Playgroud)

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