【问题标题】:The proof for the complexity of sorting algorithms [duplicate]排序算法复杂性的证明[重复]
【发布时间】:2017-12-19 21:14:44
【问题描述】:

该定理表示:

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

为了证明我找到了:

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

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

2^h ≥ n!

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

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

【问题讨论】:

    标签: algorithm sorting asymptotic-complexity


    【解决方案1】:

    Stirling's approximation 应用于日志2(n!) 项给出:

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

    这是Ω(n log2(n))

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-09
        • 2021-08-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多