首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否存在稳定排序算法的共同原因?

是否存在稳定排序算法的共同原因?
EN

Stack Overflow用户
提问于 2013-12-27 19:22:29
回答 1查看 133关注 0票数 0

我知道排序算法可以是稳定的,也可以是不稳定的。我知道这两者的区别。通过将switching过程替换为insert,用linked list将不稳定的算法转换为稳定的算法。但是我想知道是否存在稳定排序算法的共同原因?也许有人能分享一些信息或者解释一下?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-27 23:04:46

通常,如果算法在没有检查中间元素的情况下交换两个元素,则不稳定。这主要适用于就地算法,但是对于非就地算法,您可以检查是否有任何元素被插入到输出中,这样一个相同的元素可能位于错误的一侧。

想想快速排序吧。在一开始,您可以交换最左边和最右边的元素(没有做很多其他的事情),所以它不稳定。

想想插入排序吧。如果不先检查两个元素之间的所有元素,就不会交换两个元素,所以它是稳定的。

虽然这有点模糊,但是有很多排序算法都是完全不同的,所以它必须是模糊的。

而且,不要把这当作一条规则,它只是一个一般的观察(而且它确实对某些算法不起作用)。你只需要深入了解算法是否稳定,或者检查别人说的是什么。

通过使用链表将switching过程替换为insert,将不稳定的算法转换为稳定的算法。

我不完全理解这句话,但我几乎可以保证,它并不适用于所有排序算法。

要将任何(基于比较的)不稳定排序算法转换为稳定的排序算法,您可以向比较中添加一个附加参数,这可能只是原始数组中的索引。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20806542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档