審判程序的靈魂

算法效率的度量:算法

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)。

空間與時間的策略:

一、多數狀況下,算法執行時所用的時間更使人關注

二、若是有必要,能夠經過增長空間複雜度來下降時間複雜度

三、同理,也能夠經過增長時間複雜度來下降空間複雜度

在實現算法時,須要分析具體問題對執行時間和空間的要求。

相關文章
相關標籤/搜索