2 算法
2.1 算法定義:
算法是解決特定問題求解步驟的描述,在計算機中表現爲指令的有限序列,並且每條指令表示一個或多個操作。
2.2 算法的特性
算法具有五個基本特性:
- 輸入:有0或多個輸入
- 輸出:至少一個或多輸出
- 有窮性:在執行有限步驟後,自動結束不會出現無限循環
- 確定性:每一步驟都有明確含義,不會出現二義性
- 可行性:每一步都能夠通過執行有限次數完成
2.3 算法設計的要求
- 正確性
- 可讀性
- 健壯性:當輸入數據不合法時,算法也能作出相關的處理,而不是產生異常或莫名其妙的結果
- 時間效率高和存儲量低
2.4 算法度量方式
- 事後統計方法
- 事前分析估算方法
基本的操作數量必須表示成輸入規模的函數。
2.5 算法複雜度
計算算法的時間複雜度其實是一個很基礎的東西,目前看主要就是先看執行次數和問題規模的函數f(n),然後推導大O階的方法計算出時間複雜度,其實只需要關注f(n)中的最高階的階數,因爲在問題規模趨向於無限大的時候,起決定性作用的就是這個最高階。計算方法如下:
2.6 常見時間複雜度:
執行次數函數 | 階 | 非正式術語 |
---|---|---|
12 | 常數階 | |
$線性階 | ||
平方階 | ||
對數階 | ||
階 | ||
立方階 | ||
指數階 |
2.7 最壞情況與平均情況
一般沒說明的情況下,指最壞情況
平均情況具有參考意義
2.8 算法空間複雜度
通過計算算法所需的存儲空間實現。
“時間複雜度”指運行時間的需求
“空間複雜度”指空間需求