找出算法的时间复杂度?

时间:2015-02-21 17:42:20

标签: algorithm

我认为它是log(logn),因为循环重复log(logn)次...

j=1;
i=2;
while (i <= n) do {
    B[j] = A[i];
    j = j + 1;
    i = i * i;
}

1 个答案:

答案 0 :(得分:2)

你是对的,它是O(lg(lg n)),其中lg代表基数2的对数。

原因是i的值序列受规则i = prev(i) * prev(i)约束,结果证明是2 ^ 2 ^ 2,2 ^ 4,2 ^ 8,......对于步骤1,2,3,4 ......换句话说,i次迭代后k的值为2^{2^k}

因此,只要2^{2^k} > nk > lg(lg(n))(只需将lg两次加到不等式的两边,循环就会停止。不等式仍然有效,因为lg是增加的功能。)