1.
演算法的五個重要特徵是:
有窮性,確定性,可行性,輸入,輸出。
2. 演算法的設計要求:
正確性,可讀性,健壯性,效率與低儲存量需求。
3. 演算法效率的度量:
(1)事後統計的方法:
優點:
可以分辨程式的優劣,有時甚至可以精確到毫秒。
缺點:
a.必須先執行程式;
b.容易掩蓋演算法本身的優劣。
(2)事前分析估算的方法:
因素:
演算法策略,問題規模,語言級別,機器**質量,機器執行指令的速度。
4. 演算法的時間複雜度:
t(n) = o(f(n));
常見的漸近時間複雜度:
o(1) < o(log2(n)) < o(n) < o(nlog2(n)) < o(n^2) < o(n^3) < o(n!) < o(n^n)。
5. 演算法的空間複雜度:
s(n) = o(f(n));
所佔記憶體空間:
輸入資料,程式本身,輔助變數。
複雜度分析 時間複雜度分析和空間複雜度分析
其實,只要講到資料結構與演算法,就一定離不開時間 空間複雜度分析。而且我個人認為,複雜度分析是整個演算法學習的精髓,只要掌握了它,資料結構和演算法的內容基本上就掌握了一半。1.時間複雜度分析 對於剛才羅列的複雜度量級,我們可以粗略地分為兩類,多項式量級和非多項式量級。其中,非多項式量級只有兩個 o ...
演算法的複雜度 演算法的時間複雜度和空間複雜度
在一次筆試題目中,發現了自己對於演算法的時間複雜度問題上並沒有完全清晰這個概念和計算方法,故上網尋找到比較好的詳細介紹來學習。演算法的時間複雜度和空間複雜度合稱為演算法的複雜度。1.時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也...
時間複雜度和空間複雜度分析
演算法是指用來運算元據 解決程式問題的一組方法。對於同乙個問題,使用不同的演算法,也許最終得到的結果是一樣的,但在過程中消耗的資源和時間卻會有很大的區別。那麼我們應該如何去衡量不同演算法之間的優劣呢?主要還是從演算法所占用的 時間 和 空間 兩個維度去考量。接下來主要介紹時間複雜度和空間複雜度的計算...