如何计算此函数的复杂度?

时间:2019-06-15 04:29:44

标签: c loops for-loop complexity-theory

我想知道内部for循环的时间复杂度是sqrt(n)还是log(n)?

void foo(int n)
{
 for (int i=0; i<n*n; ++i)
     for (int j=1; j*j<n; j*=2)
         printf("Hello there!\n");
}

2 个答案:

答案 0 :(得分:3)

内部for循环中的

j将取值1,2,4,... 2 ^ t

还根据给定的约束, 2 ^ 2t = n

所以,t =(1/2)logn

因此,内部循环应具有时间复杂度O(log(n))

答案 1 :(得分:0)

我认为内部for循环的复杂度为O(sqrt(n))。要使其变为O(log(n)),内部for循环应类似于以下内容:

编辑

应为O(log(n))。