一、演算法
1、定義
- 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示一個或多個操作。
ps:演算法為了解決某個或某類問題,需要把指令表示成一定的操作序列,操作序列包括一組操作,每一個操作都完成特定的功能。
2、演算法與資料結構的關係
- 演算法是資料結構的具體運用。
3、演算法的特性
3.1 輸入輸出
- 演算法具有零個或多個輸入,但是一定有輸出。
ps:輸入是使用者對計算機發出的指令,輸出是計算機的反饋結果
3.2 有窮性
- 演算法在執行有限的步驟之後,自動結束而不會出現無限迴圈,並且每一個步驟在可接受的時間內完成。
3.3 確定性
- 演算法的每一步驟都具有確定的含義。演算法在一定條件下,只有一條執行路徑,相同的輸入只能有唯一的輸出結果。演算法的每個步驟被精確定義而無歧義。
3.4 可行性
- 演算法的每一步都必須是可行的,每一步都能夠通過執行有限次數完成。演算法可以轉換為程式上機執行,並得到正確的結果。
4、演算法設計的要求
4.1 正確性
-
演算法的正確性是指演算法至少應該具有輸入、輸出和加工處理無歧義性、能正確反映問題的需求、能夠得到問題的正確答案。
1.演算法程式沒有語法錯誤。
2.演算法程式對於合法的輸入資料能夠產生滿足要求的輸出結果。
3.演算法程式對於非法的輸入資料能夠得出滿足規格說明的結果。
4.演算法程式對於精心選擇的,甚至刁難的測試資料都有滿足要求的輸出結果。
-
證明一個複雜演算法在所有層次上都是正確的,代價非常昂貴。所以一般情況下,我們把層次3作為一個演算法是否正確的標準。
4.2 可讀性
- 演算法設計的另一目的是為了便於閱讀、理解和交流。
4.3 健壯性
- 當輸入資料不合法時,演算法也能做出相關處理,而不是產生異常或莫名其妙的結果。
4.4 時間效率高和儲存量低
- 時間效率指的是演算法的執行時間,對於同一個問題,如果有多個演算法能夠解決,執行時間短的演算法效率高,執行時間長的效率低。
- 儲存量需求指的是演算法在執行過程中需要的最大儲存空間,主要指演算法程式執行時所佔用的記憶體或外部硬碟儲存空間。
歡迎掃描下方二維碼,持續關注:
網際網路工程師(id:phpstcn),我們一起學習,一起進步