各种排序算法的"稳定"和"不稳定"是什么意思?

Ash*_*man 35 sorting algorithm

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

Ron*_*ren 55

如果排序算法被称为"不稳定",这意味着对于排名相同的任何项目,绑定成员的顺序不保证与该集合的连续排序保持相同.对于"稳定"排序,绑定的条目在排序时总是以相同的顺序结束.

对于应用程序的示例,快速排序算法不稳定.这对于按优先级排序操作(如果两个操作具有相同的优先级,您不太可能关心首先执行绑定的哪些元素)这样的工作正常.

另一方面,稳定的排序算法对于诸如在线游戏的排行榜之类的东西是有益的.如果您使用不稳定排序,按点排序(例如),那么在网页上查看排序结果的用户可能会在页面刷新时遇到不同的结果,并且诸如分页结果之类的操作将无法正常运行.

  • 编辑,以包括一些差异为何重要的例子. (4认同)
  • 不可用的排序通常产生可预测的结果,即在给定相同数据的情况下它们不会给出不同的答案.因此,当其他值更改时,页面刷新将仅显示等于的不同顺序.不稳定的原因在于在组织数据时使用树或一些类似的数据结构. (3认同)
  • 值得注意的是,稳定排序的更常见用法是按多个键排序.例如,如果你有一个代表人的对象数组,并且你希望它按年龄排序,并且按名称(字母)打破关系,那么你可以先按名称排序,然后按年龄排序,然后稳定排序会有它处于你正在寻找的状态. (3认同)

Pet*_*ter 6

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

  • 在文件管理器和 Excel 等工具中完成的排序是稳定的,它们要么使用稳定排序,要么使用不稳定排序之一的稳定版本。 (2认同)