什么是算法?

了解算法如何运行世界

算法是一组指令。 定义真的很简单。 算法可以像给出这样的指令一样简单:

  1. 沿着街道往下走
  2. 拿第一个右边
  3. 找到左边的第二个房子
  4. 敲门和
  5. 交付包裹。

但是,虽然算法的定义很简单,但实际意义以及它如何影响我们的生活可能会非常复杂。

一个算法的例子

我们在日常生活中使用的算法的一个常见例子是配方。 这套说明为我们提供了所有我们需要的成分以及如何处理这些成分的指导。 听起来很简单,对吧?

但如果你不知道量杯保存在哪里呢? 你需要一个算法来找到它。 你甚至可能需要一个关于如何使用量杯的算法。

所以虽然算法是一组指令,但它也需要考虑谁或将要解释这些指令的内容。 例如,如果您向朋友发出指示,详细说明如何从您的房子到最近的杂货店,那么您的朋友只有在知道您的房子位于何处时才知道如何去该商店。 他们无法从另一个朋友的家找到那家特别的杂货店。

这就是算法如何既简单又复杂。 当我们谈论计算机算法时,理解计算机能做什么是制定算法的基本部分。

排序算法如何演变

最早创建的算法之一是气泡排序例程。 泡泡排序是一种通过循环遍历数据集来排序数字,字母或单词的方法,并行比较每组值,并在需要时交换它们。

重复这个循环直到算法可以在整个列表中移动而不需要交换任何东西,这意味着值被正确排序。 这种类型的算法通常被称为递归算法,因为它一遍又一遍地循环,直到它完成任务。

算法看起来可能很简单:

  1. 转到第一个值。
  2. 根据需要检查下一个值和交换位置的值
  3. 转到下一个值并重复比较。
  4. 如果我们在列表的最后,如果在循环期间交换了任何值,则返回顶部。

但是冒泡排序并不是最有效的排序方式。 随着时间的推移和计算机变得更有能力快速完成复杂的任务,新的排序算法出现了。

一种这样的算法扫描第一个列表并创建第二个排序值列表。 此方法只会遍历原始列表,并且每个值都将循环遍历第二个列表,直到找到放置值的正确位置。 通常,它比使用冒泡排序方法更高效。

这是算法可能变得非常疯狂的地方。 或者真的很有趣,取决于你如何看待它。

尽管气泡排序方法被认为是以多种方式排序值最无效的方法之一,但如果原始列表正确预分类,泡泡排序可能是有效的方法之一。 这是因为,在这种情况下,冒泡排序算法会一次遍历列表并确定它被正确排序。

不幸的是,我们并不总是知道我们的列表是否预先排序,所以我们必须选择一种在大量列表中平均使用效率最高的算法。

我们从泡沫分类中学到了什么

Facebook算法和日常生活中的更多

算法每天都在帮助人类。 当您搜索网页时,一个算法正在努力寻找最佳搜索结果。 向智能手机询问路线,算法会决定您采取的最佳路线。 当你浏览Facebook时,算法会决定我们朋友的哪些Facebook帖子对我们来说最重要。 (希望我们的朋友不要发现Facebook认为我们最喜​​欢哪一个!)

但算法思维可以帮助我们远远超出我们的计算机生活。 它甚至可以帮助我们建立更好的三明治。

比方说,我从两片面包开始,将芥末放在一片上,将蛋黄酱放在另一片上。 我在蛋黄酱面包上放了一片奶酪,顶端放了一些火腿,一些生菜,两片番茄,然后用芥末覆盖在上面。 好的三明治吧?

当然,如果我马上吃。 但是,如果我把它放在桌子上一会儿,那么顶部的一片面包就会因浸泡一些番茄而变得潮湿。 这是一个我没有预料到的问题,我可能会在注意到之前多年制作三明治,但是一旦我做了,我就可以开始考虑改变我的算法以建立更好的三明治。

例如,我可以摆脱番茄。 但我不想失去番茄的味道。 相反,我可以把面包和莴苣之后的番茄放在三明治上。 这使得生菜在番茄和面包之间形成保护屏障。

这就是算法演变的过程。 算法不一定要由计算机运行才算算法。 算法是一个过程,过程就在我们身边。