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

常用算法思想

作者: 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