對於兩個不嵌套的循環,兩個大O表示法有什麼區別?兩個非嵌套循環的大O表示
實施例:
for(int i=0; i<n; i++){
System.out.println(i);
}
for(int j=0; j<n; j++){
System.out.println(j);
}
對於兩個不嵌套的循環,兩個大O表示法有什麼區別?兩個非嵌套循環的大O表示
實施例:
for(int i=0; i<n; i++){
System.out.println(i);
}
for(int j=0; j<n; j++){
System.out.println(j);
}
線性
O(n) + O(n) = 2*O(n) = O(n)
不要緊,有多少非嵌套循環你有沒有(如果這個數量是恆定的,不依賴於n
)的複雜性是線性的,就等於最大數量循環中的迭代。
那麼這是否意味着當你有2個嵌套循環'O(n^2)'你應該將它們分成兩個單獨的循環來獲得以某個內存爲代價的'O(n)'? – ACV
這將是O(2N),因爲在運行N + N = 2n個迭代。 (2n)基本上等於O(n),因爲2是一個常數。
從技術上講,該算法仍然在O(n)時間內運行。
儘管迭代增長2爲在n
每次增加的數量,仍所花費的時間增加了在一個線性速率,從而,在O(n)的時間。
這將是O(n)
+ O(n)
==>實際上O(n)
,因爲我們不保持常數值。
可能重複的[大O的純英文解釋](http://stackoverflow.com/questions/487258/plain-english-explanation-of-big-o) – GayashanNA