我们知道,算法本质上是一套规则,它接受一个或多个输入,然后执行内部计算和数据操作,返回一个或多个输出。从复杂的数据操作和哈希,到简单运算,算法通过一系列步骤来产出有用的结果。举个例子,算法可以是一个简单的函数,它接受两个输入值,将它们相加,然后返回总和。
然而,科学世界的算法何止万千,如何快速找到自己需要的算法是一个不容忽视的问题。
GitHub 上的一个项目「The Algorithms」是我们寻求的终极答案,它号称「规模最大的开源算法库」。

- 网页地址:https://the-algorithms.com/#aboutUs
- 项目地址:https://github.com/TheAlgorithms
首先来看「热门分类」,我们可以找到如下领域的算法:
- 排序(Sorts)算法
- 搜索(Searches)算法
- 动态规划(Dynamic Programming)算法
- 加密(Ciphers)算法
- 数据结构(Data Structures)算法
- 数学(Math)算法
- 数字图像处理(Digital Image Processing)算法
- ……

然后,各个「热门分类」下面涵盖具体的算法。这里以动态规划算法为例,我们可以看到编辑距离(Edit Distance)、子集和问题(Sum of Sunset)、最小分区(Minimum Partition)等子算法。

接着点击每个子算法右下的「MORE」,这里以编辑距离算法为例,我们可以链接到算法提出者、日期、问题描述以及贡献者等。

最后,「The Algorithms」库还分别提供了用 Python、Java、C、C++ 等数十种编程语言实现的算法,每种语言都有自己的 GitHub 算法代码库。

部分编程语言。
这里以 Python 编程语言实现的算法为例,我们可以看到音频滤波器(Audio Filters)、位操作(Bit Manipulation)、回溯(Backtracking)算法等。同样点击每个算法右下的「More」链接到详情页。

使用 Python 实现的部分算法。
此外,我们还可以通过网站主页上的搜索框找到任何自己想要的算法。
