2011-05-25 42 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)