我已经弄清楚如何从以下问题获得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是?
由于
答案 0 :(得分:0)
首次复杂度为O(log_{1.5} n)
,但第二次为O(log_2(n))
。因此,最坏的情况是最糟糕的!