2016-08-10 71 views
0

什麼是爲while循環

x = 1 
while(x < SomeValue) 
{ 
    x *= 2; 
} 

的時間複雜度時間複雜度,我相信這是O(N),作爲循環將持續一個固定數量的迭代。 我的假設是否正確?

+0

我不介意錯誤,但只是如果我錯了,那麼什麼是正確的答案。 – Cdesai

+0

如果它是一個固定的迭代次數,它有多少? –

回答

2

時間複雜度爲O(log(n)),因爲x正在呈指數增長。

+0

除非'SomeValue <= 1',在這種情況下複雜度是O(1)。 – cybersam

+1

@cybersam您可以將該參數應用於任何大O表示法。如果你指定'n'的值,你總是可以將它解決爲一個常數,從而將它變成O(1)。 – Brian

+0

如果SomeValue> 1,那麼複雜度是'O(log(SomeValue))',而不是'O(1)'。 – cybersam

1

循環將在O中執行(日誌n)時間。希望數學能讓理性更清楚。每次迭代都是恆定的。爲了尋找與SomeValue迭代次數,我們稱之爲,你可以看到ñ迭代後,x將值2 。該循環結束一次xt。因此,爲了找到滿足或超過t所需的迭代次數,針對x插入2並且解決t。您得到t = log 2(n)。因此,O(日誌n)時間。