我需要找到某个函数的时间复杂度,而且我不确定自己是否正确。
让我们看看:
f(int i){
Int x = 1;
While(x > i){
System.out.println(x);
x=x*2;
}
While(x > 2){
x = (int) Math.pow(x,1/2);
System.out.println(x);
}
}
现在,我认为第一个while循环告诉我们x = log(i);
第二个循环由x决定,她在每次迭代中都取x的值:
x ^ 1/2 + x ^ 1/4 +•••+ x ^ 1 /(2 ^ k)。
假设第二个循环在x <= 2时停止,因此她运行:
((Log(i))^ 1 /(2 ^ k),在对数规则后,我们发现它是O(loglog(n))
假设第一个循环是while(x < 1)
。
log(n)
。log(log(n))
。第一个循环是主要的,因此我想说函数f()
具有log(n)
复杂度。