for循环的运行时间,i = i * 2

时间:2018-03-28 12:53:46

标签: algorithm

以下代码的运行时间是什么?

    for(i=1; i<= n; i=i∗2)

外循环运行log_2(n)次,那么内循环的运行是什么?

3 个答案:

答案 0 :(得分:1)

随着内环线性增加,它不会对外环产生任何影响。所以它将 n次。在这种情况下, n 将根据 i 的值而改变。

答案 1 :(得分:1)

enter image description here

PS:最后的总和等于2(n - 1) O(n)

答案 2 :(得分:0)

最简单的是尝试一个例子(这不是证明,但这取决于,如果你必须证明它,或者只是找到正确答案就足够了)

因此对于n = 1024

i=1
i=2
i=4
i=8
i=16
....
up to 1024

额外信息:外环运行log_2(n)次(但我们不需要此信息进行计算)

内循环以i的值运行,即

1+2+4+8...+1024=1024*2 - 1 = 2*n - 1 = O(n)

答案:最多2*n - 1你好打印。如果n不是这种格式2^k=n,则k可以更低,其中k是整数。它可以低一半(n = 512,n = 1023将有相同的结果)

(Hellos printed) >= n AND (HELLOS printed) <= 2*n - 1