【閱讀筆記】——時間複雜度

時間複雜度

場景一:一根長10寸的麪包,每3天吃掉一寸,那麼吃完整個麪包須要幾天?
答案天然是:3×10=30天
能夠記做:T(n) = 3n算法

場景二:一根16寸的麪包,每5天吃掉剩餘的一半,吃的只剩下1寸,須要多少天?
答案:以2爲底,16的對數,簡寫成log16,因此爲 5×log16 = 20天
能夠記做: T(n) = 5logn函數

場景三:每2天吃掉一個雞腿,那麼吃掉整個雞腿須要多少天?
答案:2天
能夠記做:T(n) = 2get

場景四:一根長10寸的麪包,吃掉第一個一寸須要1天,吃掉第二個1寸須要2天,吃完整個麪包須要多少天?
答案:從1累加到10,共55天
能夠記做:T(n) = 0.5n^2+0.5ntable

這四個場景分別是:線性式、對數式、常量式、多項式qq

漸進時間複雜度:

好比算法A的相對時間是 T(n)=100n,算法B的相對時間是T(n)=5n^2,到底哪一個運行時間長呢?這要看n的取值tab

官方定義:時間

若存在函數 f(n),使得當 n 趨近於無窮大時,T(n)/f(n) 的極限值爲不等於零的常數,則稱 f(n) 是 T(n) 的同數量級函數
記做 T(n)=O(f(n)) 稱爲O(f(n))爲算法的漸進時間複雜度,簡稱時間複雜度,漸進時間複雜度用大寫 O 表示,因此也被稱爲 大O表示法

如何推導出時間複雜度,有以下幾個原則:co

  1. 若是運行時間是常數量級,用常數 1 表示
  2. 只保留時間函數中的最高階項
  3. 若是最高階項存在,則省去最高階項前面的係數

回頭看上面四個場景block

T(n) = 3n -> T(n) = O(n)
T(n) = 5logn -> T(n) = O(logn)
T(n) = 2 -> T(n) = O(1)
T(n) = 0.5n^2+0.5n -> T(n) = O(n^2)

文章:什麼是時間複雜度?ps

相關文章
相關標籤/搜索