程式設計
演算法(algorithm)
/ AL-guh-rith-um /
演算法(algorithm)是一份精確的、一步接一步的「食譜」,用來解決某個問題或得到某個結果。在你的程式碼動手做任何事之前,背後總有一個方案——一連串確切的步驟,把你手上的輸入變成你想要的答案。演算法就是這個方案;程式碼只是把它寫下來的其中一種方式。
有個好辦法去體會它:做菜的食譜就是一種演算法。拿這些食材,按這個順序做這幾步,你就能穩穩地做出那道菜。給朋友指路也是。讓它成為「演算法」而不只是個模糊念頭的,是那份精確——沒有哪一步留給瞎猜,每一步都清楚到機器也能照著做。
同一個問題可以有許多種演算法,而它們並不一樣好。給一串名字排序有十幾種做法;有的眨眼就完,有的在長清單上慢慢爬。所以挑對演算法——夠快、夠簡單、在每種情況下都正確——是這門手藝實打實的一部分,和敲程式碼本身是兩回事。
// algorithm: find the largest number
let max = nums[0];
for (const n of nums) {
if (n > max) max = n;
}
// max now holds the biggest value一個用樸素步驟寫成的小演算法:從第一個開始,誰更大就留誰。
隨著輸入變大,一個演算法的開銷如何增長,叫做它的「時間複雜度」——這正是面對同一批資料,一種做法快如閃電、另一種慢得讓人難受的原因。
又稱
另見