時間複雜度

過後統計和事前分析

一個算法的效率,能夠經過其在計算機上運行的時間來評估,這叫過後統計,但編譯和運行環境的不一樣會致使運行時間不一樣,因此這種方法並不科學。算法

使用統計法估算算法基本運算的次數,這種數學方法叫事前分析。顯然事前分析更科學。數組

時間頻度和時間複雜度

假設有一個對長度爲n的數組排序的算法,它的基本運算次數和n的關係可用函數 T(n) = 5n3 + 3n2 + 6來表示,那麼稱T(n)爲此算法的時間頻度,又名語句頻度函數

在n趨於無窮大時,T(n)和n3的比例是個常數,從複雜度方面來說,T(n)和n3是同樣的,也就是說T(n)和n3具備相同的複雜度。在評估一個算法的複雜度時,咱們只關心其最高次項,並不關心低次項和最高次項度係數,咱們將O(T(n))定義爲算法的時間複雜度code

注意,時間頻度和時間複雜度的測量對象是不一樣的,時間頻度測量的是算法的基本運算次數,是個相對精準的概念,時間複雜度測量的是算法的複雜度,是個比較籠統的概念。對象

問題

  • 時間複雜度是什麼?
  • T(n) = O(f(n)) 中的O是什麼意思?
  • 爲何要用O來表示時間複雜度?
相關文章
相關標籤/搜索