什么是算法
来自 知乎大头妹D
算法是解决某个问题的计算方法、步骤。比如,小学乘法算法表,九九八十一。比如,妈妈做饭脑子里出现的食谱,先炒,再炖,再小火收汁(我又饿了)。
早上起床看了会《漫画算法》,突然想到计算两位数相乘是否也有好的算法。
例如:91*91,按照小学老师教的计算方法如下图所示
看到网上有一种快的方法,口算就可以算出来
81*81 用这种算法就算不出来了,这体现了算法的一种特殊性。
51 * 51 52 * 52 ... 59 * 59 都可以用下面这个口诀
口诀:头 * 头 + 尾,尾 * 尾 不足补0
25(5 * 5)+1=26 1 * 1=1 最后结果等于 2601
算法的五个特征
-
有穷性
算法的有穷性是指算法必须能在执行有限个步骤之后终止
-
确切性
算法的每一步骤必须有确切的定义
-
输入项
一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件
-
输出项
一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的
-
可行性
算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步骤,即每个计算步骤都可以在有限时间内完成(也称之为有效性)
算法的两大衡量标准
-
时间复杂度
运行时间的长度,比如从一堆数字中计算出最大的那个数字,我的算法执行了5秒,而你的算法只需要1秒,那可能是你的比较好
-
空间复杂度
占用空间的大小,比如我的代码运行需要占用 5MB 的内存,而你的代码运行需要占用 100MB 内存。
这时候就得看具体情况了,比如使用者的内存就很大,使用者更在乎代码的运行时间,浪费一点内存无所谓,那你的算法更优,如果使用者的内存比较小,不在乎代码的运行时间,那我的算法更优。现在机器的内存已经不再是瓶颈,更重要的是算法的运行速度。
算法的实际应用
- 抖音的推荐算法
- 百度的搜索引擎
- 高德地图最优路线