---
# System prepended metadata

title: 演算法筆記｜演算法的基本概念
tags: [演算法]

---

## 演算法筆記｜演算法的基本概念

#### ㄧ、什麼是演算法？

&emsp;&emsp;演算法其實無所不在，簡單來說，演算法是一個幫助我們**解決問題的流程**。譬如說今天機車動不了，我們想要解決這個問題，所以我們整理出了一套流程，機車動不了，是不是沒電了，是的話，更換電瓶；不是的話，再檢查是不是引擎壞了，是的話，更換引擎，不是的話，送回原廠修理，最終，機車又可以發動了。像這樣思考的觀念就稱為演算法的思維，將要解決的問題流程化。

![演算法的流程圖](https://hackmd.io/_uploads/BydFQKONkg.jpg)



#### 二、演算法的特徵

&emsp;&emsp;我們所討論的演算法大多是使用在程式語言上的演算法，一個演算法必須存在以下五個特徵

1. **輸入**：一個演算法必須有0個以上的輸入
2. **有限性**：一個演算法的步驟是有限的
3. **明確性**：演算法執行的每個步驟必須是明確的
4. **有效性**：必須確保演算法執行可以獲得正確的結果
5. **輸出**：一個演算法必須有1個以上的輸出結果

所以簡單來說演算法就是輸入->演算法->輸出



有趣的小知識：世界上公認第一個演算法是在公元前325年寫在幾何原本裡的歐幾里德演算法，就是我們熟悉的輾轉相除法，是不是很酷！


