Max-Heapify中最糟糕的情况 - 为什么你得到2n / 3?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Max-Heapify中最糟糕的情况 - 为什么你得到2n / 3?相关的知识,希望对你有一定的参考价值。

我已经弄清楚如何从以下问题得到2n / 3:

Worst case in Max-Heapify - How do you get 2n/3?

“在CLRS,第三版,第155页,给出了MAX-HEAPIFY:

'孩子的子树每个都有2n / 3的大小 - 最坏的情况发生在树的底层正好是半满的时候。'“

但是,我想知道,当树的底层正好是半满时,我们得到:

T(n)<= T(2n / 3)+ theta(1)

然后在其子树上的下一个递归调用中,该子树的底层全部已满(因为我们事先已经假定这一侧尽可能满,而另一侧为空以获得上述重复)。因此,下次通话的重复将是:

T(n)<= T(n / 2)+ theta(1)

并且之后每次递归调用都是一样的。

复发实际上发生了变化,我们怎么还能使用主定理?

但后来我发现因为a = 1,而f(n)= n ^ 0,那么无论b是什么,最坏的情况下运行时间总是O(lgn),那么我们为什么还要弄清楚b是什么?

谢谢

答案

第一次复杂性是O(log_{1.5} n),但第二次是O(log_2(n))。因此,最糟糕的情况是最糟糕的!

以上是关于Max-Heapify中最糟糕的情况 - 为什么你得到2n / 3?的主要内容,如果未能解决你的问题,请参考以下文章

MAX-HEAPIFY 中的最坏情况:“最坏情况发生在树的底层正好是半满时”

MAX_HEAPIFY 算法和最坏情况的递归关系

如何在没有递归的情况下编写Max Heap代码

编程中最难的就是命名?这几招教你快速上手

手动调用析构函数总是一个糟糕的设计标志?

text Git很难:搞砸很容易,弄清楚如何解决你的错误是不可能的。所以这里有一些糟糕的情况我已经说过了