38

有人可以解释与各种排序算法有关的“稳定”和“不稳定”的含义> 如何确定算法是否稳定,以及不稳定的排序算法通常有哪些应用程序(因为它们不稳定)?

4

2 回答 2

61

如果说排序算法是“不稳定的”,这意味着对于任何排名相同的项目,绑定成员的顺序不能保证与该集合的连续排序保持相同。对于“稳定”排序,被绑定的条目在排序时将始终以相同的顺序结束。

以应用为例,快速排序算法是不稳定的。这对于按优先级对操作进行排序之类的操作很好(如果两个操作具有相同的优先级,您可能不会关心先执行平局的哪些元素)。

另一方面,稳定的排序算法适用于在线游戏排行榜之类的事情。如果您要使用不稳定的排序,例如按点排序,那么在网页上查看排序结果的用户可能会在页面刷新时遇到不同的结果,并且分页结果等操作将无法正常运行。

于 2013-02-28T01:00:09.960 回答
7

稳定的排序保留相同项目的顺序。通过将行索引附加到键,可以使任何排序变得稳定。不稳定的排序,例如堆排序和快速排序,本来就没有这个属性,但是使用它们是因为它们往往比稳定排序更快、更容易编码。据我所知,没有其他理由使用不稳定的排序。

于 2013-02-28T01:04:41.807 回答