算法效率的度量:算法
A、過後統計法:比較不一樣算法對同一組輸入數據的運行處理時間。函數
缺陷:測試
一、爲了得到不一樣算法的運行時間必須編寫相應程序。3d
二、運行時間嚴重依賴硬件以及運行時的環境因素。blog
三、算法的測試數據的選取至關困難編譯器
過後統計法雖然直觀,可是實施困難且缺陷多,通常不予考慮。io
B、事前分析估算:依據統計的方法對算法效率進行估算。編譯
影響算法效率的主要因素:class
一、算法採用的策略和方法效率
二、問題的輸入規模
三、編譯器所產生的代碼
四、計算機執行速度
從以上三種來看,t3<t2<t1。
算法效率的度量:大O表示法,簡化了算法效率的比較,
一、算法效率嚴重依賴於操做(Operation)數量。
二、在判斷時首先關注操做數量的最高次項。
三、操做數量的估算能夠做爲時間複雜度的估算。
O(5) = O(1)
O(2n + 1) = O(2n) = O(n)
O(n^2 + n + 1) = O(n^2)
O(3n^3+1) = O(3n^3) = O(n^3)
在沒有特殊說明時,咱們所分析的算法的時間複雜度都是指最壞時間複雜度。
算法空間的複雜度:
算法的空間複雜度經過計算算法的存儲空間實現,
S(n) = O(f(n)),
其中,n爲問題規模,f(n)爲在問題規模爲n時所佔用存儲空間的函數。
大O表示法一樣適用於算法的空間複雜度,當算法執行時所須要的空間是常數時,空間複雜度爲O(1)。
空間與時間的策略:
一、多數狀況下,算法執行時所用的時間更使人關注
二、若是有必要,能夠經過增長空間複雜度來下降時間複雜度
三、同理,也能夠經過增長時間複雜度來下降空間複雜度
在實現算法時,須要分析具體問題對執行時間和空間的要求。