我想知道内部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");
}
答案 0 :(得分:3)
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))。