算法的時間複雜度

咱們假設計算機運行一行基礎代碼須要執行一次運算算法

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

相關文章
相關標籤/搜索