如何计算以下伪代码的时间复杂度:

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

【问题讨论】:

如果Sumsum 功能相同,则复杂度为o(n) 其中n = len(A) 不是同一个函数。 很明显复杂度是 O(n) 【参考方案1】:

很明显,复杂度是O(n)。数组的每个元素只被访问一次。

在公式a = b = 2f(n) = O(1) 中。求解这些值,您将得到 O(n)

【讨论】:

以上是关于如何计算以下伪代码的时间复杂度:的主要内容,如果未能解决你的问题,请参考以下文章

如何计算算法复杂度

SkipList (跳跃表)解析及其实现

根据计算复杂度选择有效的选择器

伪代码与时间复杂度

如何计算以下函数的时间复杂度?

伪多项式算法