编程

算法(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

一个用朴素步骤写成的小算法:从第一个开始,谁更大就留谁。

随着输入变大,一个算法的开销如何增长,叫做它的「时间复杂度」——这正是面对同一批数据,一种做法快如闪电、另一种慢得让人难受的原因。

又称
proceduremethod