如何计算以下伪代码的时间复杂度:
Posted
技术标签:
【中文标题】如何计算以下伪代码的时间复杂度:【英文标题】:How can I calculate the time complexity of the following pseudocode: 【发布时间】: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)
【参考方案1】:
很明显,复杂度是O(n)
。数组的每个元素只被访问一次。
在公式a = b = 2
和f(n) = O(1)
中。求解这些值,您将得到 O(n)
。
【讨论】:
以上是关于如何计算以下伪代码的时间复杂度:的主要内容,如果未能解决你的问题,请参考以下文章