算法設計與分析——數據結構概念

算法特性

有窮性(finite):算法的執行次數有窮,即它包含的計算步驟有窮。
確定性(definite):每條指令都是明確的、無二義的 
可行性(effective):每條指令都必須是能夠執行的 
輸入(input):允許有0個或多個輸入,取自特定的集合 
輸出(output):產生一個或多個輸出, 與輸入量有特定的關係

計算過程與算法的區別在於,計算過程不具有窮性,是個死循環。
程序=數據結構+算法

算法目標

正確性:首要因素
可讀性
健壯性:當輸入不正確時,可以應對處理
高效、低存儲

時間複雜度T(n)

算法的時間複雜度由算法中的基本操作的執行次數來度量其大小。

  • 時間複雜度T(n)=問題規模的某個函數f(n)

時間複雜度不僅依賴於問題的規模n,也取決於輸入數據的特性(如,元素的初始狀態)

  1. 平均情況下的時間複雜度 A(n):規模爲n的所有輸入的算法時間複雜度的 平均值

  2. 最壞情況下的時間複雜度 W(n):在問題規模同爲n時,基本運算執行次數爲最多的時間複雜度

算法的漸進性態分析

漸進時間複雜度:當問題的規模趨於無限大時的時間複雜度

  1. T(n)=O(f(n)) ——大O表示法
    當n的規模趨於無窮,ヨc > 0,總有 T(n)≤c*f(n) 。
    此時,T(n)的階低於或等於f(n)的階。即T(n)的增長速度小於或等於f(n)。
    可知T(n)的上界
  2. T(n)=Ω(f(n)) ——大Ω表示法
    當n的規模趨於無窮,ヨc > 0,總有 T(n)≥c*f(n) 。
    此時,T(n)的階高於或等於f(n)的階。即T(n)的增長速度大於或等於f(n)。
    可知T(n)的下界
  3. T(n)=Θ(f(n))——Θ表示法
    當n的規模趨於無窮,T(n)=O(f(n))且 T(n)=Ω(f(n)) 。
    此時,T(n)的階與f(n)的同階。即T(n)的增長速度與f(n)近似相等。 可知T(n)的確界

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章