Sorting 无键比较排序算法

Sorting 无键比较排序算法,sorting,Sorting,关于这一点,我可以读到: 一些特殊情况下的算法(中提到了一个示例 编程珍珠(Pearls)可以比 O(n*log(n))。这些算法不是基于比较项目 被分类和依靠诡计。事实证明,没有 密钥比较算法的性能优于O(n*log(n)) 这是我第一次听说非比较算法。有谁能给我举一个这样的算法的例子,并更好地解释它们如何比O(nlog(n))更快地解决排序问题?那个网页的作者在说什么把戏 欢迎链接到论文或其他好的来源。谢谢。是的,非比较排序通常以O(n)为例。这些排序算法的一个例子是和。首先,让我们把术语弄

关于这一点,我可以读到:

一些特殊情况下的算法(中提到了一个示例 编程珍珠(Pearls)可以比 O(n*log(n))。这些算法不是基于比较项目 被分类和依靠诡计。事实证明,没有 密钥比较算法的性能优于O(n*log(n))

这是我第一次听说非比较算法。有谁能给我举一个这样的算法的例子,并更好地解释它们如何比O(nlog(n))更快地解决排序问题?那个网页的作者在说什么把戏


欢迎链接到论文或其他好的来源。谢谢。

是的,非比较排序通常以O(n)为例。这些排序算法的一个例子是和。首先,让我们把术语弄清楚:

  • 密钥比较算法不能比
    O(nlogn)
    更好
  • 在对数据进行某些假设的情况下,还有其他非比较算法可以比
    O(nlogn)
    做得更好。这就是一个例子
  • 为了给出第二类的直观示例,假设您知道输入数组完全由0和1组成。您可以迭代数组,计算0和1的数量。让我们调用最终计数
    n0
    n1
    。然后迭代输出数组,写出
    n0
    0,后跟
    n1
    1。这是一种
    O(n)
    排序算法

    仅仅因为我们利用了数据的特殊结构,就有可能为这个问题提出一个线性时间算法。这与键比较算法不同,键比较算法是通用的。这种算法不需要知道任何关于数据的信息,除了一件事:它们需要知道如何比较任意两个元素的排序键。换句话说,给定任意两个元素,它们需要知道排序数组中哪一个应该排在第一位


    用一种算法就能以任何可以想象的方式对任何东西进行排序的代价是,没有一种算法比平均值
    O(n logn)
    更好。

    注意:编辑后,从“这是我第一次听说无键比较算法”中删除了“否”一词。-尽管这是回答问题的关键。对不起,我不懂编辑。这不是我第一次听说如此著名的密钥比较算法。这是我第一次听说“无关键比较alg”。再次使用NPESo使用的术语进行编辑,我们可以说我问题中引用的“技巧”与“对数据进行某些假设”的可能性密切相关?@LuigiMassaGallerano:没错。