2016-02-26 42 views
-2

我的教授已經給我們班授課了,沒有多少解釋。給定一段代碼來確定大O符號和增長函數。我瞭解big-O部分,但在增長功能部分失去了一些。確定增長函數

for (int count = 0; count < n; count ++) { 
    for (int count2 = 0; count2 < n; count2 = count2 * 2) { 
     System.out.println(count, count2); 
    } 
} 

這就是我們給的。一個解釋將不勝感激。

+4

您確定這是正確的代碼嗎?因爲這將陷入一個無限循環(count2將始終爲0,0 * 2 = 0) – Maljam

+0

對不起,這是一個錯字,應該是int count2 = 1; – MadsClaire

回答

1

雖然Maljam是關於它是一個無限循環,通過使這兩個從1開始並且< = n中的假設是正確的:

外for循環將使內for循環發生:

N-1次

內部的for循環會使系統輸出語句運行約(按樓層荷蘭國際集團的功能):

log_2(N)倍

因此,大O的結果是這兩個的乘積:

O((n-1個)(log_2(N)))

或者更簡單地說:

O(nlogn)

+0

我理解那部分,但我不確定增長函數是什麼意思 – MadsClaire

+0

儘管我從來沒有聽說過「增長函數」這個特定術語,但我會假設答案只是nlogn。 –

+0

謝謝你的幫助 – MadsClaire