算法的定義
算法是一系列良定義的計算步驟
算法和程序的區別
算法
算法是指解決問題的一種方法或一個過程。
算法是若干指令的有窮序列,滿足性質:
- 輸入:有外部提供的量作為算法的輸入。
- 輸出:算法產生至少一個量作為輸出。
- 確定性:組成算法的每條指令是清晰,無歧義的。
- 有限性:算法中每條指令的執行次數是有限的,執行每條指令的時間也是有限的。
程序
- 程序是算法用某種程序設計語言的具體實現。
- 程序可以不滿足算法的性質(4)。
- 例如操作系統,是一個在無限循環中執行的程序,因而不是一個算法。
- 操作系統的各種任務可看成是單獨的問題,每一個問題由操作系統中的一個子程序通過特定的算法來實現。該子程序得到輸出結果后便終止。
算法的性質
有窮性:算法必須在有限步驟后終止
確定性:算法必須是沒有歧義的
可行性:可以機械的一步步執行
算法的表示
自然語言、編程語言、偽代碼
算法的分析
分析原則
- 統一機器性能
- 情況最壞分析
算法運行時間僅依賴於輸入規模n,表示為T(n)
漸進分析
漸進記號
常用的復雜性函數
算法分析基本法則
非遞歸算法:
- for / while 循環
循環體內計算時間循環次數; - 嵌套循環
循環體內計算時間*所有循環次數; - 順序語句
各語句計算時間相加; - if-else語句
if語句計算時間和else語句計算時間的較大者。