大話數據結構讀書筆記《2算法》

2 算法

2.1 算法定義:

算法是解決特定問題求解步驟的描述,在計算機中表現爲指令的有限序列,並且每條指令表示一個或多個操作。

2.2 算法的特性

算法具有五個基本特性:

  • 輸入:有0或多個輸入
  • 輸出:至少一個或多輸出
  • 有窮性:在執行有限步驟後,自動結束不會出現無限循環
  • 確定性:每一步驟都有明確含義,不會出現二義性
  • 可行性:每一步都能夠通過執行有限次數完成

2.3 算法設計的要求

  • 正確性
  • 可讀性
  • 健壯性:當輸入數據不合法時,算法也能作出相關的處理,而不是產生異常或莫名其妙的結果
  • 時間效率高和存儲量低

2.4 算法度量方式

  • 事後統計方法
  • 事前分析估算方法

基本的操作數量必須表示成輸入規模的函數。

2.5 算法複雜度

計算算法的時間複雜度其實是一個很基礎的東西,目前看主要就是先看執行次數和問題規模的函數f(n),然後推導大O階的方法計算出時間複雜度,其實只需要關注f(n)中的最高階的階數,因爲在問題規模趨向於無限大的時候,起決定性作用的就是這個最高階。計算方法如下:
在這裏插入圖片描述

2.6 常見時間複雜度:

執行次數函數 非正式術語
12 O(1)O(1) 常數階
2n+32n+3 O(n)O(n) $線性階
3n2+2n+13n^2+2n+1 O(n2)O(n^2) 平方階
5log2n+205log_2n+20 O(logn)O(log_n) 對數階
2n+3nlog2n+192n+3nlog_2n+19 O(nlogn)O(nlog_n) nlognnlogn
6n3+2n2+3n+46n^3+2n^2+3n+4 O(n3)O(n^3) 立方階
2n2^n O(2n)O(2^n) 指數階

O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)O(1)<O(log n)<O(n)<O(nlog n)<O(n 2)<O(n 3)<O(2 n)<O(n!)<O(n^n)

2.7 最壞情況與平均情況

一般沒說明的情況下,指最壞情況
平均情況具有參考意義

2.8 算法空間複雜度

通過計算算法所需的存儲空間實現。
“時間複雜度”指運行時間的需求
“空間複雜度”指空間需求

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