【问题标题】:Find the optimal sorting algorithm by inversions number/Pearson's r通过倒数/Pearson's r 找到最佳排序算法
【发布时间】:2015-04-16 16:03:23
【问题描述】:

是否有可能在预排序序列中找到具有给定元素数量和反转数或该序列的皮尔逊 r 的最佳排序算法?

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

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

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

我发现了很多关于倒置数和 Person 的 r 的参考资料,作为定义序列“排序性”的一种方式,但我无法比较元素的数量和倒置/Pearson 的 r 哪种排序算法是首选。

感谢您的帮助。

【问题讨论】:

    标签: algorithm sorting inversion


    【解决方案1】:

    如果您假设您的排序算法是基于比较的,那么可能很难击败传统排序算法(如合并排序)的最坏情况 O(n log n) 时间。我相信为了做得更好或更好,您可能不得不假设反转次数为 O(n log n),远小于最坏情况的 O(n^2)。然后,如果您有 O(n) 次反转,并且只要一个元素与其左邻居形成反转,您就可以继续向后交换,那么像冒泡排序之类的东西可以在 O(n) 时间内运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-10
      • 2010-09-23
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 2017-05-11
      • 1970-01-01
      相关资源
      最近更新 更多