以下代码的运行时间是什么?
for(i=1; i<= n; i=i∗2)
外循环运行log_2(n)次,那么内循环的运行是什么?
答案 0 :(得分:1)
随着内环线性增加,它不会对外环产生任何影响。所以它将 n次。在这种情况下, n 将根据 i 的值而改变。
答案 1 :(得分:1)
答案 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