演算法規範 - 資料結構導論


演算法被定義為一系列有限的指令,遵循這些指令可以執行特定任務。

所有演算法都必須滿足以下標準:

輸入

一個演算法具有零個或多個輸入,這些輸入取自或收集自指定的物件集合。

輸出

一個演算法具有一個或多個輸出,這些輸出與輸入之間存在特定關係。

確定性

每一步都必須清晰定義;每個指令都必須清晰明確。

有限性

演算法必須在有限的步驟後始終完成或終止。

有效性

所有要完成的操作都必須足夠基本,以便能夠精確地在有限長度內完成。

編寫演算法的不同方法

我們可以用多種方式描述演算法。

  • 自然語言:使用自然語言(如英語)來實現。
  • 流程圖:圖形表示,用流程圖表示,僅當演算法小而簡單時。
  • 虛擬碼:這種虛擬碼跳過了大多數歧義問題;對程式語言的語法沒有特殊要求。

示例 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) 教程,瞭解更多關於演算法的知識。

更新於:2024年6月28日

27K+ 瀏覽量

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.