美文网首页学会算法
常用算法思想

常用算法思想

作者: Shimmer_ | 来源:发表于2021-05-13 23:23 被阅读0次

1. 递推算法

递推算法使用“步步为营”的方法,不断利用已有的信息推导出新的东西。

  • 顺推法:是指从已知条件出发,逐步推算出要解决问题的方法。例如:斐波拉契数列就可以通过顺推法不断递推算出新的数据。
  • 逆推法:是从已知的结果出发,用迭代表达式逐步推算出问题开始的条件,即顺推法的逆过程。

2. 枚举/穷举算法

枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:

(1)可预先确定候选答案的数量;

(2)候选答案的范围在求解之前必须有一个确定的集合。

3. 递归算法

一种直接或者间接地调用自身的算法。递归算法的具体实现过程一般通过函数或子过程来完成,在函数或子过程的内部,编写代码直接或者间接地调用自己,即可完成递归操作。

  • 求阶乘、进制转换

4. 分治算法

(1)分解:将要求解的问题划分成若干规模较小的同类问题;

(2)求解:当子问题划分得足够小时,用较简单的方法解决;

(3)合并:按求解问题的要求,将子问题的解逐层合并,即可构成最终的解。

5. 贪婪算法

从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快地求得更好的解。当达到算法中的某一步不能再继续前进时,就停止算法,给出近似解。

由贪婪算法的特点和思路可看出,该算法存在以下问题:

  • 不能保证最后的解是最优的;
  • 不能用来求最大或最小解问题;

只能求满足某些约束条件的可行解的范围

6. 试探算法

为了求得问题的解,先选择某一种可能情况进行试探,在试探过程中,一旦发现原来的选择的假设情况是错误的,就退回一步重新选择,继续向前试探,如此反复进行,直至得到解或证明无解。

7. 模拟算法

在程序设计语言中,可使用随机函数来模拟自然界中发生的不可预测情况

8. 动态规划

9. 回溯

10. 双指针(快慢指针)

相关文章

网友评论

    本文标题:常用算法思想

    本文链接:https://www.haomeiwen.com/subject/npdfjltx.html