这个while循环的时间复杂度?

时间:2012-08-01 06:43:40

标签: while-loop time-complexity

这个循环的时间复杂度是多少?

j=2
while(j <= n)
{
    //body of the loop is Θ(1)
    j=j^2
}

1 个答案:

答案 0 :(得分:3)

你有

j = 2

和每个循环:     j = j ^ 2

模式是:

2     = 2^(2^0)
2*2   = 2^(2^1)
4*4   = 2^(2^2)
16*16 = 2^(2^3)

可以看作:

2^(2^k) with k being the number of iteration

因此循环在以下时间停止:

2^(2^k) >= n
log2(2^(2^k)) >= log2(n)
2^k >= log2(n)
log2(2^k) >= log2(n)
k >= log2(log2(n))

复杂性是log2(log2(n))