資料-第3課-程式的靈魂-演算法
阿新 • • 發佈:2018-10-31
第3課-程式的靈魂-演算法
- 資料結構與演算法
(1) 資料結構只是靜態的描述了資料元素之間的關係。
(2) 高效的程式需要在資料結構的基礎上設計和選擇演算法。
高效的程式:恰當的資料結構 + 合適的演算法。
- 演算法的定義
(1) 演算法是特定問題求解步驟的描述。
(2) 在計算機中表現為指令的有限序列。
演算法是獨立存在的一種解決問題的方法和思想。
對於演算法而言,語言並不重要,重要的是思想。
- 演算法的特性
(1)輸入
演算法具有0個或多個。
(2)輸出
演算法至少有1個或多個輸出。
(3)有窮性
演算法在有限的步驟之後會自動結束而不會無限迴圈。
(4)確定性
演算法中的每一步都有確定的含義,不會出現二義性。
(5)可行性
演算法的每一步都是可行的。
- 演算法設計的準則
(1)正確性
l 演算法對於合法資料能夠得到滿足要求的結果。
l 演算法能夠處理非法輸入,並得到合理的結果。
l 演算法對於邊界資料和壓力資料都能得到滿足要求的結果(不強制要求滿足)。
(2)可讀性
演算法要方便閱讀,理解和交流。
(3)健壯性
演算法不應該產生莫名其妙的結果。
(4)高性價比
利用最少的時間和資源得到滿足要求的結果。
注意:
(1)正確性是演算法最需要滿足的基本的準則,但是作為計算機程式,不可能無限制的滿足這條準則。
(2)演算法可讀性是最容易被忽視的,然而程式是寫給人看的,而不是計算機。
小結
(1) 演算法是為了解決實際問題而設計的。
(2) 資料結構是演算法需要處理的問題載體。
(3) 資料結構與演算法相輔相成。
程式 = 資料結構 + 演算法