给定M最大值的每个基于比较的排序算法的时间复杂度的下限Ω(nlogn)

时间:2013-12-24 16:55:02

标签: algorithm sorting comparison binary-tree lower-bound

给定具有n个元素[1,...,n]的数组的最大元素M,如何影响每个基于比较的排序算法的时间复杂度的下限Ω(nlogn)?我必须强调,给出了数组的最大元素M.

2 个答案:

答案 0 :(得分:3)

它没有受到影响。

请注意,n!可能存在排列,每个比较OP有两种可能的结果 - “左边更高”或“右边更高”。
对于任何基于比较的算法,每个“决定”都是根据一次比较的结果制定的。

因此,为了成功确定任何排列的正确顺序,您将需要(在最坏的情况下)log 2 (n!)比较。
然而,众所周知,log 2 (n!)在Theta(nlogn)中 - 无论范围如何,你都会回到Omega(nlogn)的下限。在手边。

请注意,其他不使用(仅)比较的方法可以更有效地对整数进行排序。

答案 1 :(得分:1)

如果M实际上是数组元素绝对值的约束,并且元素是整数,则可以通过保持单独的数组{O(n + M)来对数组进行排序。 1}}初始化为int occurrences[2M + 1];,扫描原始数组并计算每个元素的出现次数,并使用0编写输出数组。

如果元素是浮点数(正式的,实数),那么它们的大小就没有影响了。

如果元素是积分的并且可以是负的(形式上,任意大幅度的整数),那么在幅度上有一个上限没有效果。

修改在第一段中有occurrences,应为O(n)