数据结构讲座表明,heapify的公式是: T(n)≤T(2n / 3)+Θ(1)。 但后来它说 “根据主定理的情况2,T(n)= O(lg n),因此,Heapify占用对数时间。”我真的不明白,a,b,c和d的值是什么,为什么这个案例属于定理的第二种情况,结果是O(lg n)?
THX
答案 0 :(得分:0)
考虑,对于n> 1,T(n)= aT(n / b)+ n ^ c
有三种情况(注意b是对数基数)
(1) if logb a < c, T(n)=Θ(n^c),
(2) if logb a = c, T (n) = Θ(n^c log n),
(3) if logb a > c, T(n) = Θ(n^(logb a)).
在你的情况下,你有
T(n) = T(2n/3) + n^0
我们可以说,
n^0 here because Θ(1) = Θ(n^0)
所以,
a = 1, b = 3/2, and c = 0
我们可以轻易地证实
log3/2 1 = 0
因此我们看到我们需要使用案例2
logb a = c
所以,
T(n) = Θ(n^c log n) = Θ(n^0 log n) = Θ(log n)
查看您发布的图片
观察案例2.
它说
Θ(n log n) if d = b
一般情况下,
Θ(n^i log n) if d = b^i
d = b^i implies logb d = i
但为了(希望)澄清
d = 1且b = 3/2(并且如上所示)i = 0
所以,
d = b ^ i是真的
我在这里使用了不同的字母,但这与我上面描述的方式相同。我做了两次同样的事情,一次使用帖子中的字母,希望能为你清理一切。无论你如何看待它,你都会使用案例2.