首页 文章

排序算法复杂性的证明[重复]

提问于
浏览
0

这个问题在这里已有答案:

该定理表示:

任何比较排序算法在最坏的情况下执行Ω(nlg(n))比较 .

证明我发现:

查看算法执行的最差情况下的比较次数,意味着在其决策树中从根到叶的最长路径 .

作为高度为h的二叉树,最多有2 ^ h叶子,并且有n!排列(输出),我们有:

2 ^h≥n!

我知道我们可以将 2^h ≥ n! 重写为 h ≥ log2(n!) 但我们怎么能最终得到:

h≥log2(n!)=Ω(n * lg(n))?

2 回答

  • 0

    N!是n个小于或等于n的数的乘积,因此:

    log(n!) < log(n^n)
    => log(n!) < n*log(n)
    

    和n!是n / 2数字的乘积,至少为n / 2,以及其他一些数字> 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
    
  • 4

    Stirling's approximation应用于log2(n!)项给出:

    n log2(n) - log2(e)* n O(log2(n))

    这是Ω(n log2(n))

相关问题