在具有n个元素的排序算法中的高度为h的决策树中:
我们有这样的事情:
n! <= 2^h
因此h&gt; = log(n!)
我知道n ^ n大于n!,但在这里我们讨论的是最坏情况的下界,log(n!)的图形低于(log n ^ n)的图形。所以答案应该是Ω(log n!),因为它不能低于它。
那么我们怎么能在这之后说h =Ω(nlogn)..?
答案 0 :(得分:2)
答案 1 :(得分:2)
你说对了!并且n n 具有不同的生长速率,但它们的对数(log n!和log n n )实际上具有相同的生长速率。 @Salvador Dali指出,斯特林的近似是一种很好的方式来看待这一点,但这是另一种看待它的方式。
首先,请注意log n n = n log n通过对数属性。这很简单。
怎么样(log n!)?首先,请注意
log n!
= log(n·(n-1)·(n-2)·..·2·1)
= log n + log(n-1)+ log(n-2)+ ... + log 2 + log 1
这再次使用对数属性。从这里,我们可以看到log n! = O(n log n),因为
log n + log(n-1)+ log(n-2)+ ... + log 2 + log 1
≤logn + log n + log n + ... + log n + log n(n次)
= n log n
我也要声称登录n! =Ω(n log n)。这是一种看待这个的方法。查看上述求和的前n / 2项,即
log n + log(n-1)+ log(n-2)+ ... + log(n / 2)
请注意,此数量不小于
log(n / 2)+ log(n / 2)+ log(n / 2)+ ... + log(n / 2)(n / 2次)
=(n / 2)log(n / 2)
最后一个数量是Ω(n log n),所以总体来说我们看到log n! = O(n log n)和log n! =Ω(n log n),所以n! =Θ(n log n)。换句话说,记录n!渐渐地以与log n n 相同的速率渐近地增长,即使原始函数是n!和 n 有不同的增长率。 p>
希望这有帮助!