通过反转数/ Pearson的r找到最优的排序算法

时间:2015-04-16 16:03:23

标签: algorithm sorting inversion

是否有可能找到一个最佳的排序算法,其中包含一个预先排序的序列中的给定数量的元素和一个倒序数或该序列的Pearson&#s;

例如,我有一个预先排序的262143元素序列。

最大反转量由(n(n-1))/2捐赠,其中n是序列中元素的数量(有关此假设,请参阅here page 2)。对于此示例,最大值为34359345153

现在,我的预先排序序列的反转次数为1299203725,最大值为3.78%。我的Pearson的r是0.9941。根据我的理解,这应该是一个具有高"排序性的排序顺序" (如果我错了,请纠正我。)

我发现很多关于反转次数和人物r的引用都是定义" sortness"一个序列,但我无法得到某种比较的元素和倒置数/ Pearson的排序算法是首选的。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果你假设你的排序算法是基于比较的,那么很难打败传统排序算法(例如合并排序)的最坏情况O(n log n)时间。我相信为了做得更好或更好你可能不得不假设反转的数量是O(n log n),远小于最坏情况O(n ^ 2)。如果你有O(n)反转,那么类似冒泡排序的东西可以和O(n)时间一样快,只要一个元素与它的左邻居形成一个反转,你就会继续向后交换。