演算法規範 - 資料結構導論
演算法被定義為一系列有限的指令,遵循這些指令可以執行特定任務。
所有演算法都必須滿足以下標準:
輸入
一個演算法具有零個或多個輸入,這些輸入取自或收集自指定的物件集合。
輸出
一個演算法具有一個或多個輸出,這些輸出與輸入之間存在特定關係。
確定性
每一步都必須清晰定義;每個指令都必須清晰明確。
有限性
演算法必須在有限的步驟後始終完成或終止。
有效性
所有要完成的操作都必須足夠基本,以便能夠精確地在有限長度內完成。
編寫演算法的不同方法
我們可以用多種方式描述演算法。
- 自然語言:使用自然語言(如英語)來實現。
- 流程圖:圖形表示,用流程圖表示,僅當演算法小而簡單時。
- 虛擬碼:這種虛擬碼跳過了大多數歧義問題;對程式語言的語法沒有特殊要求。
示例 1:計算數字階乘值的演算法
Step 1: a number n is inputted Step 2: variable final is set as 1 Step 3: final<= final * n Step 4: decrease n Step 5: verify if n is equal to 0 Step 6: if n is equal to zero, goto step 8 (break out of loop) Step 7: else goto step 3 Step 8: the result final is printed
遞迴演算法
一個遞迴演算法呼叫自身,通常將返回值作為引數再次傳遞給演算法。此引數指示輸入,而返回值指示輸出。
遞迴演算法被定義為一種簡化方法,它將問題分解成具有相同性質的子問題。一次遞迴的結果被視為下一次遞迴的輸入。重複是以自相似的方式進行的。演算法使用較小的輸入值呼叫自身,並透過簡單地對這些較小的值執行操作來獲得結果。階乘的生成、斐波那契數列都是遞迴演算法的例子。
示例:使用遞迴編寫階乘函式
intfactorialA(int n)
{
return n * factorialA(n-1);
}
閱讀我們的資料結構和演算法 (DSA) 教程,瞭解更多關於演算法的知識。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP