订购n个号码的最佳运行时间

时间:2015-08-31 17:06:16

标签: sorting asymptotic-complexity radix-sort

我有0到(n ^ 4 - 1)之间的n个数字,这是我对它们进行排序的最快方法。

当然,nlogn是微不足道的,但是我想到了Radix Sort with base n的选项,而不是线性时间,但我不确定是因为-1。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我认为你误解了Radix Sort的效率。来自Wikipedia

  

对于n个键,基数排序复杂度为O(wn),n个键是字大小w的整数。有时w表示为常数,这将使得基数排序比基于比较的最佳排序算法更好(对于足够大的n),所有排序算法都执行O(n log n)比较以排序n个键。但是,通常w不能被认为是常数:如果所有n个密钥都是不同的,则w必须至少为log n,以便随机访问机器能够将它们存储在内存中,这最多会给出时间复杂度O (n log n)。

我个人会实施快速选择intelligent pivot。使用此方法,您可以实现约1.188 n log n效率。

答案 1 :(得分:0)

如果我们在基数n中使用基数排序,我们得到所需的线性时间复杂度,-1无关紧要。

我们将代表基数n中的数字:

然后我们得到:< =((n ^ 4 - 1)的log(基数n))*(n + n)< = 4 *(2n)< = O(n)。

n代表n个数字,另一个n只是数字span(高估),n ^ 4 - 1的log小于log n ^ 4,其中n为4。整体线性时间复杂度。

感谢您的帮助!如果我做错了,请通知我!