如何在最快的时间内对几乎排序的数组进行排序?(爪哇)鸡尾酒排序

我有一个值数组,它几乎是,但不是很排序,有几个值被置换(比如,50 in 100000)。如何最有效地对其进行排序?(性能在这里绝对至关重要,应该比O(N)快得多)。

我知道 smoothsort,但我找不到 Java 实现。有谁知道它是否已经实现?或者我可以用于此任务而不是平滑排序的内容?


答案 1

实际上,维基百科包含了 smoothsort 的 Java 实现。你可以在这里找到它:

http://en.wikipedia.org/wiki/Smoothsort


答案 2

鸡尾酒排序

如果你想要一个易于实现的简单算法,你可以做一个鸡尾酒排序。它将在几乎排序的输入上很好地工作。


推荐