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

时间:2017-12-16 15:30:20

标签: algorithm tree time-complexity heap clrs

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

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

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

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

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

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

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

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

此后每次递归调用都是一样的。

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

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

由于

1 个答案:

答案 0 :(得分:0)

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