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

确定内循环运行两次外循环变量时的时间复杂度

刘畅
2023-03-14

我是分析时间的新手complexity.some有人能帮我解决下面算法的时间复杂度吗?

public void test(int n)
{
  int i=1;

   while(i<n)
   {
      int j=0; 
      while (j<n)
      {
         j=j+(2*i);
      }

     i=i*2;
   }
}

外部循环将运行日志(n)次。内部循环将运行多少次。我们如何用“n”来计算内环的频率,因为它取决于变量“i”。

有人能帮忙找出上面代码的时间复杂度吗。

共有1个答案

钦高峯
2023-03-14

循环将运行log(n)次。

n=32。因此,内部循环将运行:

  • n/2对于i=1

所以这个几何级数的和是

n/2 n/4 ..... 1

因此,上述算法的时间复杂度是

logn + 2n

这是O(n)

 类似资料:
  • 我有一个嵌套的for循环: 如何找到这个循环的时间复杂度。 我在考虑外部循环,它从0运行到n^2(独占),所以它运行n^2 1次。 对于内部循环,它取决于i,这就是我迷失的地方。有什么指示吗?

  • 这是一个正常的嵌套循环,具有复杂性 我很难理解为什么下一个循环也有复杂性,即使它打印的语句更少 有什么想法吗?

  • 今天,我和我的同事就一个特定的代码片段发生了一个小争论。代码看起来像这样。至少,这是他想象的那样。 他希望我删除第二个循环,因为这会导致性能问题。 然而,我确信,因为我在这里没有任何嵌套循环,所以无论我放了多少个顺序循环(我们只有2个),复杂度总是O(n)。 他的论点是,如果< code>n是1,000,000,并且循环需要5秒,那么我的代码将需要10秒,因为它有2个for循环。这个说法之后我就糊

  • 我很难理解算法分析,尤其是下面的例子: 所以我的理解是,外循环是,当我乘以一个常量时,我不确定是否有任何区别。 不过,最让我困惑的是内部循环。我认为它是,因为j被常数递减,但我不确定和

  • 这个问题是为了修改过去的试卷,如果我走上了正确的道路,我需要一些建议。 求出下面一段代码的时间复杂度,表示给定整数n的操作次数: 所以我认为外循环是,第一个内环是,第二个内环是。我只是想知道我是否有一个大致的想法,以及如何从这里继续前进。