一個算法的效率,能夠經過其在計算機上運行的時間來評估,這叫過後統計
,但編譯和運行環境的不一樣會致使運行時間不一樣,因此這種方法並不科學。算法
使用統計法估算算法基本運算的次數,這種數學方法叫事前分析
。顯然事前分析更科學。數組
假設有一個對長度爲n的數組排序的算法,它的基本運算次數和n的關係可用函數 T(n) = 5n3 + 3n2 + 6來表示,那麼稱T(n)爲此算法的時間頻度
,又名語句頻度
。函數
在n趨於無窮大時,T(n)和n3的比例是個常數,從複雜度
方面來說,T(n)和n3是同樣的,也就是說T(n)和n3具備相同的複雜度。在評估一個算法的複雜度時,咱們只關心其最高次項,並不關心低次項和最高次項度係數,咱們將O(T(n))定義爲算法的時間複雜度
。code
注意,時間頻度和時間複雜度的測量對象是不一樣的,時間頻度測量的是算法的基本運算次數,是個相對精準的概念,時間複雜度測量的是算法的複雜度,是個比較籠統的概念。對象
O
是什麼意思?O
來表示時間複雜度?