【发布时间】:2022-01-19 23:40:04
【问题描述】:
如何计算这个递归算法的时间复杂度,然后用它来计算主定理?
我知道对于主定理,我们将具有以下格式的函数: T(n)=aT(b/n)+f(n)
但是要计算运行时间,我只能用一般术语来思考,比如我们主要有常数,然后是 N/2,因为它会在每次迭代时拆分值。
所以我认为它会是 O(log(N)),也许吧?但是它的 T(n)=aT(b/n)+f(n) 是什么?我如何获得这个号码?
def Sum(A,left,right)
if left > right:
return 0
elif left == right:
return A[left]
mid = floor((left + right)/2)
lsum = Sum(A,left,mid)
rsum = Sum(A,mid+1,right)
return lsum + rsum
【问题讨论】:
-
如果
Sum与sum功能相同,则复杂度为o(n)其中n = len(A)。 -
不是同一个函数。
-
很明显复杂度是 O(n)
标签: algorithm time-complexity pseudocode