2016-12-15 58 views
2

我有點困惑的下面的代碼段的時間複雜度的環的複雜性(極限是硬編碼的報價爲例):時間隨增量

loss = 3; 
for(i=0;i<=10;) 
{ 
    i += loss; 
    loss = loss - 0.3; //loss keeps decreasing by some fixed value 
} 

這裏,儘管可變i正在不斷增加接近終止循環,但它增加的速度本身是可變的。

+1

如果用大數代替「10」,則循環將永遠不會終止,因爲在某個時刻'loss'將變爲負數。 –

回答

0

在此特定示例中,時間複雜度爲O(1),因爲由於它沒有參數,所以執行時總是需要相同的時間。

如果這個數字10在for循環參數n這將是O(n)一個小n,如果n是足夠大的「損失」最終將成爲負,程序會永遠運行下去。 「損失」以不變的數量影響時間複雜性。

+1

它不會是O(n) - 對於大n,寫入的代碼不會終止。 –

+0

@保爾絕對正確,「損失」最終會是負面的,它會永遠運行 – Davide