咱們假設計算機運行一行基礎代碼須要執行一次運算算法
int aFunc(void) { printf("Hello, World!\n"); // 須要執行 1 次 return 0; // 須要執行 1 次 }
上面這個方法須要執行 2 次運算函數
int aFunc(int n) { for(int i = 0; i<n; i++) { // 須要執行 (n + 1) 次 printf("Hello, World!\n"); // 須要執行 n 次 } return 0; // 須要執行 1 次 }
這個方法須要 (n + 1 + n + 1) = 2n + 2 次運算spa
咱們把 算法須要執行的運算次數 用 輸入大小n 的函數 表示,即 T(n) 。此時爲了 估算算法須要的運行時間 和 簡化算法分析,咱們引入時間複雜度的概念設計
定義:存在常數 c 和函數 f(N),使得當 N >= c 時 T(N) <= f(N),表示爲 T(n) = O(f(n))code
當 N >= 2 的時候,f(n) = n^2 老是大於 T(n) = n + 2 的,因而咱們說 f(n) 的增加速度是大於或者等於 T(n) 的,也說 f(n) 是 T(n) 的上界,能夠表示爲 T(n) = O(f(n))。blog