当前位置: 首页 > 知识库问答 >
问题:

如何找到具有内循环的算法的最坏情况时间复杂度?[副本]

楚举
2023-03-14
int sum = 0;
for (int i = 1; i < N; i *= 2)
   for(int j = 0; j < i; j++)
      sum++;

我如何找到这段代码最坏情况下的时间复杂度?我看过许多关于发现时间复杂性的教程,我理解它们。但这一个似乎有点不同于教程中的那些。

共有1个答案

宇文念
2023-03-14

让我们做简单的数学。每次迭代中i的值为1、2、4、8...(记录N+1个)术语。在每次迭代中,内循环执行I次。将i的值相加

T(N)=1+2+...+(logn+1)项,即具有a=1r=2N=(logn+1)的GP

T(N)=A[(RN-1)/(r-1)]
=1[(2(logn+1)-1)/(2-1)]
=2n-1
=O(N)

 类似资料: