美文网首页
算法设计思想

算法设计思想

作者: visitor009 | 来源:发表于2019-04-26 22:50 被阅读0次

算法思想:

  1. 枚举:列出所有的点进行处理。-开始前可以先排除不可能的点
  2. 递归:函数调用自身。-每次处理的方式一样,只是数据不一样,可以用递归。
  3. 二分法:每一次比较,将原来的数据缩小一半,然后重复,直到找到数据或查找失败。
  4. 分治:将问题分解成几个小问题,分别解决,再将结果合并。
  5. 动态规划:保存计算后的状态,下次计算的时候使用,不用重新计算。
  6. 深度优先搜索:一直往下找
  7. 广度优先搜索:先找附近的
  8. 贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。
  9. 回溯法:像枚举的一样搜索,搜索过程中尝试寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。

详解:

  1. 枚举
    逐个处理
    应用:冒泡排序、插入排序、选择排序

    枚举
  2. 递归
    应用: 快速排序、归并排序

// 阶乘
function factorial(n) {
 if (n == 1) {return 1;}
 return n * factorial(n-1);
}
factorial(4); // 24

调用函数时,自身还未结束就去调用另一个函数时,会将自身状态保存到系统栈中,直到最后一次调用结束,然后出栈。


递归
  1. 二分法
    数据得是有序的
    应用:快速排序、二分查找、

    二分查找
  2. 分治
    问题:有8枚硬币,其中有一个是假的,假的比真的轻。现在给你一个天平秤,如何用最少的次数找出假币?
    答:3次。拆分成两半,第一次 4 = 4 。第二次2 = 2。第三次 1 = 1
    应用:快速排序、归并排序、桶排序

  3. 动态规划
    建模思路:

    1. 最优子结构:原问题分解成小问题
    2. 状态:将小问题的结果保存起来
    3. 状态转换:根据已知结果推出未知
  4. 深度优先搜索
    用栈辅助实现

  5. 广度优先搜索
    用队列辅助实现

  6. 动态规划
    问题:从A到C费用最少路径?
    解: 从A中出发,2是当前最好的选择,所以A > B > C

  7. 回溯法

排序算法

相关文章

  • 算法设计思想

    算法思想: 枚举:列出所有的点进行处理。-开始前可以先排除不可能的点。 递归:函数调用自身。-每次处理的方式一样,...

  • 算法设计思想-回溯算法

    1. 是什么 渐进式寻找并构建问题解决方式的策略。 会先从一个可能的动作开始解决问题,如果不行,就回溯并选择另一个...

  • 算法设计思想-分而治之

    1. 是什么 算法设计中的一种方法。 将一个问题分成多个和原问题相似的小问题,递归解决小问题,再将结果合并以解决原...

  • 那些经典算法:贪心算法

    贪心算法和分治算法、动态规划算法、回溯算法都是一种编程思想,深入理解这些编程思想,我们也可以根据实际情况设计自己的...

  • 分治法

    分治思想 并不仅仅是一种算法,更是一种设计算法的思想 基本思想 Divide :把问题分解 Conquer :递归...

  • 算法设计思想-贪心算法

    1. 是什么 通过每个阶段的局部最优选择,从而达到全局的最优。 结果并不一定是最优。 2. 场景 2.1. 分饼干...

  • 算法的设计思想1

    1.贪婪算法 一、 贪婪算法的优点是简单直观,易于实现。缺点是在解决问题的策略上目光短浅。这种算法每当遇到满足问题...

  • 算法的设计思想2

    4,回溯法 回溯法是一种优化的穷举法。所谓穷举法就是穷举问题的所有可能性,直到发现解决问题的最佳解为止。回溯法会有...

  • 算法设计思想-动态规划

    1. 是什么 将一个问题分解为相互重叠的子问题,通过反复求解子问题,来解决原来的问题。 2. 场景 2.1. 爬楼...

  • 快速过算法设计思想

    分而治之 算法设计的一种方法。 它将一个问题分成多个和原问题相似的小问题,递归解决小问题,再将结果合并以解决原来的...

网友评论

      本文标题:算法设计思想

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