假設兩個算法的輸入規模都是n,算法A要作2n+3次操做,你能夠理解爲先有一個n次的循環,執行完成後,再有一個n次循環,最後有三次賦值或運算,共2n+3次操做。算法B要作3n+1次操做。php
當n=1時,算法A效率不如算法B(次數比算法B要多一次)。而當n=2時,二者效率相同;當n>2時,算法A就開始優於算法B了,隨着n的增長,算法A比算法B愈來愈好了(執行的次數比B要少)。因而咱們能夠得出結論,算法A整體上要好過算法B。算法
輸入規模n在沒有限制的狀況下,只要超過一個數值N,這個函數就老是大於另外一個函數,函數是漸近增加的。函數
函數的漸近增加:給定兩個函數f(n)和g(n),若是存在一個整數N,使得對於全部的n>N,f(n)老是比g(n)大,那麼,咱們說f(n)的增加漸近快於g(n)。學習
當n≤3的時候,算法C要差於算法D(由於算法C次數比較多),但當n>3後,算法C的優點就愈來愈優於算法D了,到後來更是遠遠賽過。blog
而當後面的常數去掉後,其實結果沒有發生改變。效率
去掉與n相乘的常數,這樣的結果也沒發生改變,算法C′的次數隨着n的增加,仍是遠小於算法D′。也就是說,與最高次項相乘的常數並不重要。互聯網
當n=1的時候,算法E與算法F結果相同,但當n>1後,算法E的優點就要開始優於算法F,隨着n的增大,差別很是明顯。經過觀察發現,最高次項的指數大的,函數隨着n的增加,結果也會變得增加特別快。循環
當n的值愈來愈大時,你會發現,3n+1已經無法和2n2的結果相比較,最終幾乎能夠忽略不計。也就是說,隨着n值變得很是大之後,算法G其實已經很趨近於算法I。因而咱們能夠獲得這樣一個結論,判斷一個算法的效率時,函數中的常數和其餘次要項經常能夠忽略,而更應該關注主項(最高階項)的階數。二維碼
若是對比這幾個算法的關鍵執行次數函數的漸近增加性,能夠分析出:某個算法,隨着n的增大,它會愈來愈優於另外一算法,或者愈來愈差於另外一算法。這其實就是事前估算方法的理論依據,經過算法時間複雜度來估算算法時間效率。方法
互聯網工程師(id:phpstcn),咱們一塊兒學習,一塊兒進步