在早期,當人們遇到新的問題時,他們必須解決這些問題。經過“苦思冥想”和“壹次次探索嘗試”?最後總結歸納。這就形成了我們今天學習的各種算法。如果不能理解解題思路,不能總結,就會有:“學算法有什麽用?”。不知道為什麽學習,自然會覺得學習沒有意義,沒有用。
2.壹個算法應該具有以下五個重要特征:
①有限性:算法的有限性是指算法必須能夠在執行有限步數後終止,換句話說,壹個算法必須總是在執行有限步數後結束,並且每壹步都能在有限時間內完成。
(2)確定性:算法中的每條指令都必須有確切的定義,不能有歧義,同樣的輸入只能得到同樣的輸出。
③可行性:算法中執行的任何計算步驟都可以分解成基本的可執行操作步驟,即每個計算步驟都可以在有限的時間內完成(也叫有效性)。
④輸入:壹個算法有零個或多個輸入來描述操作對象的初始情況。所謂零輸入,是指算法本身已經設定了初始條件,這些輸入取自特定的對象集合。
⑤輸出:壹個算法有壹個或多個輸出,輸出是與輸入有特定關系的量。沒有輸出的算法是沒有意義的。
算法總是要解決特定的問題。問題的源頭是算法的輸入,預期的結果是算法的輸出。壹個沒有輸入和輸出的算法是沒有意義的。
3.算法設計的五個要求:
①正確性:最基本的要求是算法必須能夠解決某個問題的需要。
②可讀性:算法的可讀性有助於人們的閱讀和交流,易於調試和修改。
(3)魯棒性:當輸入數據不合法時,算法能做出反應或適當處理,不會產生莫名其妙的輸出結果。
④效率:算法是為了解決大規模問題,所以需要運行足夠快。
⑤存儲:算法執行過程中,需要的最大存儲空間要盡可能小。
效率和存儲都與問題的規模有關。求100人的平均分和求1000人的平均分明顯不同。同壹個算法的執行時間和存儲空間明顯不同。
正確性、可讀性和健壯性不僅是算法設計的要求,而且貫穿於整個軟件設計層面就算法本身而言,我們最關心的是效率。永遠不要刻板地認為算法是壹個計算機程序。算法都是解題思路,語言描述,偽代碼,流程圖,各種符號或者控制表。