有效排序

alg*_*eks 10 c sorting algorithm

我有一个几乎但没有完全排序的值数组,其中一些值被置换(例如,50在100000中).如何最有效地排序?

Mil*_*lan 5

假设数组几乎已排序,您可以使用以下之一:

Smoothsort

Wiki甚至还有一个java实现.因为你不能比O(n)更快(因为它需要花费很多时间才能找出数组是否排序)smoothsort是一个不错的选择.更多细节在这里.

smoothsort的优点是,如果输入已经在某种程度上排序,它会更接近O(n)时间

Coctail排序

对于最坏情况和平均情况,大O符号中鸡尾酒排序的复杂性是O(n2),但如果列表在应用排序算法之前大部分是有序的,则它变得更接近O(n),

Timsort

Java的数组实际上现在在java 7中使用timsort来排序对象(sort()).timsort的描述在这里.