2015-12-23 29 views
5

對於兩個不嵌套的循環,兩個大O表示法有什麼區別?兩個非嵌套循環的大O表示

實施例:

for(int i=0; i<n; i++){ 
    System.out.println(i); 
} 

for(int j=0; j<n; j++){ 
    System.out.println(j); 
} 
+1

可能重複的[大O的純英文解釋](http://stackoverflow.com/questions/487258/plain-english-explanation-of-big-o) – GayashanNA

回答

14

線性

O(n) + O(n) = 2*O(n) = O(n) 

不要緊,有多少非嵌套循環你有沒有(如果這個數量是恆定的,不依賴於n)的複雜性是線性的,就等於最大數量循環中的迭代。

+0

那麼這是否意味着當你有2個嵌套循環'O(n^2)'你應該將它們分成兩個單獨的循環來獲得以某個內存爲代價的'O(n)'? – ACV

1

這將是O(2N),因爲在運行N + N = 2n個迭代。 (2n)基本上等於O(n),因爲2是一個常數。

5

從技術上講,該算法仍然在O(n)時間內運行。

儘管迭代增長2爲在n每次增加的數量,仍所花費的時間增加了在一個線性速率,從而,在O(n)的時間。

3

這將是O(n) + O(n) ==>實際上O(n),因爲我們不保持常數值。