【发布时间】:2021-02-17 00:10:46
【问题描述】:
为什么这段代码的复杂度是θ(N^2 log N)?
def f(n):
if n == 0:
return
else:
f(n//2)
f(n//2)
f(n//2)
f(n//2)
g(n) //runs in θ(n^2)
【问题讨论】:
标签: time-complexity
为什么这段代码的复杂度是θ(N^2 log N)?
def f(n):
if n == 0:
return
else:
f(n//2)
f(n//2)
f(n//2)
f(n//2)
g(n) //runs in θ(n^2)
【问题讨论】:
标签: time-complexity
如果您申请Master Method(请参阅案例 2->case2a),您会看到 T(n)=4T(n/2)+n^2 我们看到 ccrit = log2(4) = 2 = c, f(n)=g(n)=(n^(ccrit))*log^k(n) => k=0,k>(-1) => 然后T(n)=Theta((n^ccrit)log^(k+1)n)=Theta(N^2 log N)。
扩展解释:您在 n/2 的子问题上递归 4 次,因此 a=4,b=2,因为 g(n) 是 O(n^2),然后 c=2,因为 ccrit=c 案例 1 和 3不适用,我们看到 (n^(ccrit))*log^k(n) 确实等于 n^2 如果 k=0 并且满足情况 2。
【讨论】: