1. 程式人生 > >大O符號

大O符號

在我們通過執行時間來表徵演算法的效率時,函式的數量級表示了隨著 n 的值增加而增加最快的那些部分。數量級通常稱為大O符號,寫為 O(f(n)) 。它表示對計算中的實際步數的近似。

引數 n 通常稱為‘問題的規模’,T(n) 是解決問題大小為 n 所花費的時間,即 1+n 步長。

比如 T(n)=1+n 。當 n 變大時,常數 1 對於最終結果變得越來越不重要。如果我們找的是 T(n) 的近似值,我們可以刪除 1, 執行時間是 O(n)。要注意,1 對於 T(n) 肯定是重要的。但是當 n 變大時,如果沒有它,我們的近似也是準確的。

另外一個示例,假設對於一些演算法,確定的步數是 T(n)=5n^2 +27n+1005 。當 n 很小時, 例如1 或 2 ,常數 1005 似乎是函式的主要部分。然而,隨著 n 變大,n^2 這項變得越來越重要。事實上,當 n 真的很大時,其他兩項在它們確定最終結果中所起的作用變得不重要。當 n 變大時,為了近似 T(n),我們可以忽略其他項,只關注 5n^2 。係數 5 也變得不重要。我們說,T(n) 具有的數量級為 f(n)=n^2。 或者 O( n^2 ) 。