最通俗易懂的------------時間複雜度
一、時間複雜度
- 是什麼?
是表示執行某個演算法所需要的計算工作量 - 用什麼表示與官方定義?
漸進時間複雜度(大O表示法):若存在函式 f(n),使得當n趨近於 無窮大時,T(n)/ f(n)的極限值為不等於零的常數,則稱 f(n)是T(n)的同數量級函式。記作 T(n)= O(f(n)),稱O(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。
PS:看的頭疼代表你還是個正常人,記住紅色字型內容,然後跟著下面例子走就行了。 - 四個通俗易懂的例子
執行次數:T(n)=2n |
執行次數:T(n)=4*log2^n |
執行次數:T(n)=2 |
執行次數:T(n)= 1+2+3+......+ n-1 + n = (1+n)*n/2 = 0.5n^2 + 0.5n |
4.如何推匯出時間複雜度?
①.如果執行時間實常數級,用常數1表示
②.只保留時間函式中的最高階項
③.如果最高階項存在,則省去最高階項前面的係數
5.上四個例子的時間複雜度為:
①T(n)=2n 最高階項為2n,省去係數2,轉化的時間複雜度為:T(n) = O(n)
圖解:
②T(n)=4*log2^n 最高階項為4*log2^n,省去係數4,轉化的時間複雜度為:T(n) = O(log2^n)
圖解:
③T(n)=2 只有常數量級,轉化的時間複雜度為:T(n) = O(1)
圖解:
④T(n) = 0.5n^2 + 0.5n 最高階項為0.5n^2,省去係數0.5,轉化的時間複雜度為:T(n) = O(n^2)
圖解:
總:由上可以得出根據N值的不同,演算法的時間複雜度在不同的N值區間內會有區別,所以根據不同的情況設計不同的演算法是非常必要的。
版權宣告:本部落格為記錄本人自學感悟,內容大多從網上學習與整理所得,若侵權請告知!