網頁

2018/9/29

演算法 演算法的定義及特性

演算法(algorithm)的定義及特性如下。


演算法的定義

演算法是在有限的步驟內,解決特定問題的明確描述。


演算法的特性


  • 輸入(input):演算法會有零或一個輸入。
  • 輸出(output):演算法會有一個或多個輸出。
  • 有限性(finiteness):演算法應在有限的步驟內完成。
  • 明確性(definiteness):演算法的每一個步驟應明確而不含糊的。
  • 有效性(effectiveness):演算法的每一個步驟應可被執行且有效。

例如給定一個整數n,並計算每個位數的加總,算法可以是如下(Java遞迴)。

int add(int n) {
    if (n < 1) {
        return 0;
    } else {
        return (n % 10) + add(n / 10);
    }
}

或是將n轉為字串再拆解每個位數的字然後加總。

int add(int n) {
    int sum = 0;
    for(char c : Integer.toString(n).toCharArray()) {
        sum += c - '0';
    }
    return sum;
}

// Java 8 
int add(int n) {
    return Integer.toString(n).chars().map(c -> c - '0').sum();
}

上面範例皆為演算法,不論是否為好的演算法,仍滿足了演算法的特性,有一個輸入參數,回傳一個輸出,在有限的步驟內完成,每一個步驟都明確且可被執行,且結果是有效的。


2 則留言:

  1. hi,演算法的特性第一點有筆誤,最後應該是輸"入"而不是"出"。

    回覆刪除
  2. HI 樓上,謝謝您的好眼力

    回覆刪除