该定理表示:
任何比较排序算法都会在最坏的情况下执行Ω(nlg(n))比较。
证明我找到了:
查看算法执行的最坏情况下的比较次数,意味着在其决策树中从根到叶子的最长路径。
高度为h的二叉树最多有2 ^ h个叶子,并且有n个!排列(输出),我们有:
2 ^h≥n!
我知道我们可以将2^h ≥ n!
重写为h ≥ log2(n!)
,但我们怎样才能最终得到:
h≥log2(n!)=Ω(n * lg(n))?
答案 0 :(得分:4)
将Stirling's approximation应用于日志 2 (n!)一词给出:
n log 2 (n) - log 2 (e)* n + O(log 2 (n))
是Ω(n log 2 (n))
答案 1 :(得分:0)
N!是n个小于或等于n的数的乘积,所以:
log(n!) < log(n^n)
=> log(n!) < n*log(n)
和n!是n / 2个数至少为n / 2的乘积,以及一些其他数字&gt; 1,所以:
log(n!) > log((n/2)^(n/2))
=> log(n!) > n*log(n/2)/2
=> log(n!) > n*(log(n)-log(2))/2
=> log(n!) > n*log(n)/4 when log(n) - log(2) > log(n)/2
=> log(n!) > n*log(n)/4 when log(n) > 2log(2)
=> log(n!) > n*log(n)/4 when n > 4