以下是什么时间复杂?

时间:2014-10-30 09:46:55

标签: data-structures time-complexity

以下功能的时间复杂度是什么?

内循环的时间复杂度如何是log(n)? 给出内循环对i的每个值执行n / i次。运行时间是n *Σ(从i = 1到n){n / i} ..并且我得到它

fucntion(n)
{ 
  for(int i=1;i<=n;i++)
  {
    for(int j=1;j<=n;j+=i)
    {
      printf("*");
    } 
  }
}

1 个答案:

答案 0 :(得分:1)

在内循环的第一次运行中,我们将循环 n 次。我们第二次跳过其他所有数字,所以我们循环 n / 2次,然后 n / 3次等等。这一直持续到我们去的最后一个循环< em> n / n = 1通过循环。

正如所讨论的here,1 + 1/2 + 1/3 + ... + 1 / n 是O(log n)。由于我们正在进行 n 次,因此产生的复杂度为O(n log n)。