我必须从这个算法中找到递归方程:
ALGO(n)
if n <= 2 then return(0)
else
y = ALGO(n/3)
i = 2^n
while i >= 2 do
j = (1/2) * log(i) //base 2
while j > 0 do
i = i/2
j = j - 1
z = ALGO(n/2)
return(z+y)
我对此进行了推理并得出结论,如果 n<=2,则 T(n) = O(1)
我认为内部 while 是 O(n) (每次迭代时 j 减 1),而外部 while 是 O(logn) (每次迭代时 i 减半),给出 O(n*log( n)):
T(n) = T(n/3) + T(n/2) + O(n*log(n)) 如果 n > 2
这是一个很好的论点吗?