2011-05-25 67 views
0
i=n; 

while (i>=1) { 

    --x=x+1; 

    --i=i/2; 

} 

此代码的运行时间是多少?此代码示例的时间复杂度

AO(N^2)

BO(N^3)

CO(N^4)

DO(log n)的

EO(2^N)

我相信这是选项D

这是为了修改。不做作业

+1

我不相信你。你有三个问题,其中两个问题,以及一个关于快速排序的问题。 – 2011-05-25 12:01:34

+4

你确定虽然条件正确吗?这是一个无限循环,因为'i'总是至少等于'i'。另外,如果它是修订,那么你已经有了答案; – Lazarus 2011-05-25 12:01:52

+1

' while(i> = i)'相当于'while(true)',所以我想你犯了一个错误,不是吗? – Fezvez 2011-05-25 12:02:48

回答

2

这不会终止的,而条件是

i>=i 

但是,假设您想键入

i>=1 

答案将是log(n)。

+0

做这行i = i/2;把我们带到O(logn)? – 2011-05-25 12:10:32

+0

是的。在第k次循环迭代中,你实际上将原来的'i'除以'2^k'。 – YXD 2011-05-25 12:41:19

0

如果你改变了,而条件i>=1 因为它代表的复杂性你的信念是正确的是O(INFINITY)