关于大o:内循环的大O复杂度

Big O complexity of inner loops

外循环的大O是O(n),我认为第二个内循环的大O是log(n),但我想不出第三个内循环的大O

1
2
3
4
5
6
7
for(i=0;i<n;i+=2)
{
    for(j=1;j<i*i;j*=3)
    {
       for(k=2;k*k<=n;k++){}
    }
}


最外层的循环被执行 n-2 次,使得复杂度为 O(n)。
在第二个循环中,j 的值以 3 的幂增加,直到 i*i 等于 log3(i*i)。所以对于两个循环的组合,它是 ∑ i=1n-2 log3(i) ,它等于 log3(n!) 或者只是你提到的 n*log(n) 。最里面的循环被执行 sqrt(n) 次,使得总复杂度 O(n*log(n)*sqrt(n))