数字是多少" d"在" n"键是订单日志?

时间:2014-10-16 07:31:48

标签: algorithm sorting radix-sort

我正在阅读关于Radix排序的维基百科文章,并在描述其效率时,它说

  

对于O(d·n)或更少{n}个键的基数排序效率为d   数字。有时候d会被表示为常数,这会产生   基数排序更好(对于足够大的n)而不是最好的   基于比较的排序算法,均为O(n·log(n))   需要比较的次数。但是,一般来说d不可能   被视为常数。特别是在共同之下(但有时候   隐式)假设所有键都是不同的,那么d必须是   至少是log(n) 的顺序,它最多给出(密集的   打包密钥)时间复杂度O(n·log(n))

现在我不明白的是 - 假设所有键都是不同的,那么d必须至少为log(n) 的顺序 究竟是什么意思?

2 个答案:

答案 0 :(得分:2)

如果我们认为密钥是不同的,那么我们有n个不同的密钥,现在假设最大密钥是k,我们知道因为所有数字都是不同的所以k更大或等于到n。因此klog(k)个数字且至少为log(n),因此dO(log(n))

修改 要更清楚地了解基座log10以及Big-O中的2,请阅读此post

答案 1 :(得分:0)

如果所有键都是不同的,那么您可以对它们进行排序,最大值至少为n(仅考虑正整数)

那么n的位数是log10(n),这就是为什么d至少是log(n)