以下功能的时间复杂度是什么?
内循环的时间复杂度如何是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("*");
}
}
}
答案 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)。