算法分析與時間複雜度

算法分析的數學基礎

使用以下四個定義:

  1. 如果存在正常數c與n0,使得當N≥n0時,T(N) ≤ cf(N),則記爲T(N) = O(f(N)). 也就是大O表示法
  2. 如果存在正常數c與n0,使得當N≥n0時,T(N) ≥ cf(N),則記爲T(N) = Ω(f(N)) .也就是大Ω表示法
  3. T(N) = Θ(h(N)) 當且僅當 T(N) = O(h(N)) ,且 T(N) = Ω(h(N)) .
  4. 如果 T(N) = O(p(N))T(N) ≠ Θ(p(N)) , 則 T(N) = o(p(N)) .

總結:

通俗的說,這幾種表示法可以理解如下:

  1. 大O表示法: f(x) = O(g(x)) 表示的含義是f(x)以g(x)爲上界
  2. 小o表示法: f(x) = o(g(x)) 表示的含義是f(x)趨近於g(x)
  3. Ω表示法:f(x) = Ω(g(x)) 表示的含義是f(x)以g(x)爲下界
  4. Θ表示法:f(x) = Θ(g(x)) 表示的含義是g(x)是f(x)的確界

算法的常見時間複雜度

時間複雜度

由圖中的時間複雜度增長趨勢可以看出:

  1. 最優的算法複雜度爲logN
  2. 當 N 的值較小時,NlogN < N, 當 N 的值較大時,NlogN > N
  3. 指數次方與階乘的複雜度非常高,一般不能使用這些算法,二次方或三次方的時間複雜度在N值較大是也是相當高的,在設計算法的時候必須要注意這一點
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章