堆化堆的时间复杂度是多少?

时间:2017-10-10 21:38:58

标签: time-complexity heap master-theorem

数据结构讲座表明,heapify的公式是: T(n)≤T(2n / 3)+Θ(1)。 但后来它说 “根据主定理的情况2,T(n)= O(lg n),因此,Heapify占用对数时间。”我真的不明白,a,b,c和d的值是什么,为什么这个案例属于定理的第二种情况,结果是O(lg n)?

THX

大师定理就在这里 enter image description here

1 个答案:

答案 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.