算法:
算法是解决问题的分步过程。一个好的算法应该在时间和空间上进行优化。不同类型的问题需要以最优化的方式解决不同类型的算法技术。世界上有很多类型的算法,但是本文将讨论您必须知道的最重要和最基本的算法。
蛮力算法:
这是最基本,最简单的算法。蛮力算法是解决问题的直接方法,即,我们首先想到的解决问题的方法。从技术上讲,这就像迭代解决该问题的所有可能方法。
例如:如果有一个4位PIN码的锁。从选择的数字0-9,则蛮力算法将尝试所有可能的组合由一个像0001,0002,0003,0004,依此类推,直到我们得到正确的PIN码。在最坏的情况下,将需要10,000次尝试才能找到正确的组合。
递归算法:
这种算法基于递归。在递归中,通过将问题分解为相同类型的子问题并一次又一次地调用自己的自身来解决问题,直到借助基本条件解决了问题为止。
一个使用递归算法解决一些常见的问题是一个数的阶乘,斐波那契系列,汉诺塔,DFS的图形等
分而治之算法:
分而治之算法的思想是将问题分为两部分来解决,第一部分将问题分为相同类型的子问题。第二部分是独立解决较小的问题,然后将合并的结果相加,以得出对该问题的最终答案。
使用分而治之算法可以解决的一些常见问题是二进制搜索,合并排序,快速排序,斯特森矩阵乘法等。
动态规划算法:
这种类型的算法也称为记忆技术,因为这种思想是存储先前计算的结果以避免一次又一次地计算它。在动态编程中,将复杂的问题分成较小的重叠子问题并存储结果以备将来使用。
使用动态规划算法有背包问题,弗洛伊德算法,狄克斯特拉最短路径算法等可以解决以下问题。
贪婪算法:
在贪婪算法中,解决方案是逐部分构建的。选择下一部分的决定是基于其带来的直接好处。它从不考虑以前做出的选择。
通过贪婪算法可以解决的一些常见问题是Prim算法,Kruskal算法,Huffman编码, 等等
当然还有好多好多,这个需要你们自己去体会了。
领取专属 10元无门槛券
私享最新 技术干货