zoukankan      html  css  js  c++  java
  • 第二章算法总结

    递归的概念:直接或者间接地调用自身的算法称为递归算法。

    递归让一些复杂的问题变得简单易懂易于分析,如汉诺塔问题和Ackerman函数,在排序快排算法和归并排序算法中也有递归的运用。

    汉诺塔:

    ackerman函数:

    递归的缺点:需要不断开拓堆栈空间,占用空间大,可能导致内存溢出,并且运行效率低,不能记录已经计算过的结果,和动态规划比速度慢。

    分治法的基本思想:

    分治法将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同。递归地解决这些子问题,然后将各个子问题的解合并得到原问题的解

    一般的设算法设计模式

    void 分支法(P问题){
      设置问题边界
      if(P 小于等于最小问题规模)
    
        调用解决最小规模的方法
      将P问题分成k分   
    for( i : 1 -> k) {     yi = 分支法(pi)   }   return 合并(y1 -> yk) }

    分治算法复杂度分析:https://www.cnblogs.com/MarcusJr19/p/11661392.html (已获得作者同意进行转载)

     补充 T(n) = aT(n/b) + O(n^d)

    a:分成a个子问题

    b:将问题规模变为n/b

    d:分解和合并a个子问题的时间复杂度为O(n^d)

    分治法的核心是找到与原问题相同的子问题,一个题目看是否能用分治法要看它能否分成若干个与原问题相同的子问题,至于怎么看出来的主要看编程经验了。

    下面是自己写的快排和归并排序代码 方便使用

    https://blog.csdn.net/qq_19841133/article/details/100568593

    https://blog.csdn.net/qq_19841133/article/details/100568124

  • 相关阅读:
    WindowsServer 2016激活
    selenium浏览器复用与原理分析
    react脚手架: 配置代理
    网络请求方式
    Java: Excel导入导出
    react 组件通信方式
    react: reactrouterdom
    react: 高阶函数及函数柯里化
    react: 事件处理
    react: 生命周期
  • 原文地址:https://www.cnblogs.com/likeghee/p/11667378.html
Copyright © 2011-2022 走看看