[極客時間] 時間複雜度和空間複雜度分析

常用網站:
算法可視化動畫演示
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html


常見的幾種時間複雜度

O(x) 英文釋義 中文釋義
O(1) Constant Complexity 常數複雜度
O(log n) Logarithmic Complexity 對數複雜度
O(n) Linear Complexity 線性時間複雜度
O(n^2) N square Complexity 平方D
O(n^3) N cubic Complexity 立方
O(2^n) Exponential Growth 指數
O(n!) Factorial 階乘

注意:

1. 只看最高複雜度的運算。
2. O(x)前面的常數係數被選擇性忽略,比如O(n)時間複雜度,可以運行2n次

時間複雜度曲線
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

遞歸狀態的時間複雜度分析
例題:求斐波那契數列
在這裏插入圖片描述
分析思路:以fib(6)爲例:
在這裏插入圖片描述
共有2^6次計算
改進方法:
a. 添加一個緩存機制
b. 使用循環

主定理
在這裏插入圖片描述
在這裏插入圖片描述
空間複雜度
在這裏插入圖片描述

  1. 代碼中開了數組,則數組長度基本上就是空間複雜度
  2. 遞歸深度

參考文檔:

  1. 如何理解算法時間複雜度的表示法,例如 O(n²)、O(n)、O(1)、O(nlogn) 等? https://www.zhihu.com/question/21387264
  2. https://en.wikipedia.org/wiki/Master_theorem_(analysis_of_algorithms)
  3. https://zh.wikipedia.org/wiki/主定理
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章