演算法的本質是解決問題的方法,是思想。
在早期的時候,人們遇到新問題,必須要去解決它,經過「冥思苦想」,「反覆探索嘗試」,最後總結歸納。
這才形成了今天我們學習的各種演算法。
如果無法領會到解決問題的思想,無法總結歸納,就會有:「學演算法有什麼用?」。
不知道為什麼學,自然會認為學了沒意義,沒有用處。
————————————————————————————
演算法的5個重要特性:
①有窮性: 乙個演算法必須總是在執行有窮步之後結束,且每一步都可在有窮時間內完成。
②確定性:演算法中的每條指令必須有確切的含義,不會產生二義性,並且對於相同的輸入只能得出相同的輸出。
③可行性:演算法中的操作都是可以通過已經實現的基本運算執行有限次數實現。
④輸入: 乙個演算法有零個或多個輸入,這些輸入取自於某個特定的物件集合。
⑤輸出:乙個演算法有乙個或多個的輸出,這些輸出是同輸入有著特定關係的量。
演算法總是要解決特定的問題,問題**就是演算法的輸入,期望的結果就是演算法的輸出,沒有輸入輸出的演算法是無意義的。
演算法設計的5個要求:
①正確性:最基本要求,演算法必須能解決某個問題的需求。
②可讀性:演算法的可讀性有助於人的閱讀與交流,容易除錯和修改。
③健壯性:當輸入的資料非法時,演算法能適當做出反應或進行處理,而不會產生莫名其妙的輸出結果。
④效率性:演算法是為了解決大規模問題,因此需要執行效率足夠快。
⑤儲存性:演算法在執行過程中,所需要的最大儲存空間,應該盡可能的占用小。
效率性與儲存性都與問題規模有關,求100人的平均分與求1000人的平均分,同乙個演算法的所花費的執行時間與儲存空間顯然是不一樣的。
正確性,可讀性,健壯性不僅僅是演算法設計的要求,而是貫穿整個軟體設計層次。
單對於演算法本身來說,我們最關注的層面是效率性。
千萬不能死板的認為,演算法就是電腦程式。
演算法是一切解決問題的思想,語言描述,偽**,流程圖,各種符號或者控制**同樣是演算法。
演算法導論 第一章 1 2 演算法分析
演算法分析 概念 演算法分析即指對乙個演算法所需的資源進行 一般來說,資源是指計算時間,有時也指儲存器 通訊頻寬或邏輯門等。給定乙個問題後,通過分析幾種候選演算法,可以從中選出乙個最有效的演算法。插入排序演算法的分析 insertion sort過程的時間開銷與輸入有關 排序1000個數的時間比排序...
演算法基礎第一章
不同常數時間的操作 加或定址運算或位運算 執行時間不一樣 選擇最小的數,放到陣列的第乙個位置 時間複雜度 c n c n 1 c n 2 c 1 o n 2 額外空間複雜度 o 1 兩兩比較並交換,直到無交換 時間複雜度 o n 2 額外空間複雜度 o 1 左邊序列有序,右邊新加入乙個數,從右往左找...
演算法導論第一章
第一章 演算法在計算中的作用 1.1演算法 非形式地說,演算法就是任何良定義的計算過程,該過程取某個值或值的集合作為輸入並產生某個值或值的集合作為輸出。這樣,演算法就是把輸入轉換成輸出的計算步驟的乙個序列。若對每個輸入例項演算法都以正確的輸出停機,則稱該演算法是正確的,並稱正確的演算法解決了給定的計...