稳定排序算法有共同的原因吗?

时间:2013-12-27 19:22:29

标签: algorithm sorting

我知道排序算法可以稳定或不稳定。我知道这些之间的区别。我们可以使用switchinginsert过程替换为linked list其他单词,从而将不稳定算法更改为稳定。 但我想知道稳定排序算法的常见原因是什么?也许有人可以分享一些信息或解释?

1 个答案:

答案 0 :(得分:2)

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

想想quick-sort。在一开始你可以交换最左边和最右边的元素(没有做太多其他的事情),所以它不稳定。

想想insertion sort

,如果没有先检查其间的所有元素,你就永远不会交换两个元素。

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

此外,不要将此作为一项规则,它只是一般性观察(对某些算法可能确实不起作用)。你真的只需要深入了解算法,知道它是否稳定,或检查别人说的是什么。

  

我们可以使用链接列表将switching过程替换为insert其他单词,从而将不稳定算法更改为稳定算法。

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

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