• 算法图解的一点总结


    《算法图解》这本书不错,就像书封面说的一样,像小说一样有趣的算法入门书。在这里记下我学习的笔记。

    一、大O表示法

    1. 大O表示法:指出了算法需要执行的操作数,指出了最糟情况下的运行时间
    2. 一些常见的大O运行时间

        从快到慢

        O( log n ),即对数时间,这样的算法包括二分查找 
        O( n ),即线性时间,这样的算法包括简单查找 
        O( nlog n ),这样的算法包括快速排序,即一种较快的排序算法 
        O( n*n ),这样的算法包括选择排序,即一种速度较慢的排序算法 
        O( n! ),这样的算法包括旅行商问题的解决方案,即一种非常慢的算法

    二、递归

    1. 递归函数包含递归条件和基线条件
      • 递归条件:函数调用自己
      • 基线条件:函数不再调用自己
    2. 调用栈

    三、快速排序

    1. 分而治之(divide and conquer,D&C):递归式问题的解决方法。
      • 用D&C解决问题包括两个步骤①找出简单的基线条件②将问题不断分解(或者说缩小规模),直到符合基线条件
      • 每次递归调用都必须将问题规模缩小 
      • 递归在记录状态
      • 提示:编写涉及数组的递归函数时,基线条件通常是数组为空或只包含一个元素

       2.快速排序

         步骤

          (1)选择基准值

          (2)将数组分成两个子数组:小于基准值的元素和大于基准值的元素

          (3)对这两个子数组进行快速排序

    四、狄克斯特拉算法

    1. 找出加权图中前往X的最短路径
    2. 适用于有向无环图(不能有负权边),含有负权边的用贝尔曼-福德算法
    3. 关键理念:找出图中最便宜的节点,并确保没有到该节点的更便宜的路径
    4. 步骤
      • 找出“最便宜”的节点
      • 对于该节点的邻居,检查是否有前往它们的更短路径,如果有,更新该节点的邻居的开销
      • 重复这个过程,直到对图中每个节点都这样做了
      • 计算最终路径  

    五、贪心

    六、动态规划

    1. 动态规划可在约束条件下找到最优解
    2. 分解的每个子问题必须是离散的,不依赖于其他子问题时,动规才有用
    3. 每种动态规划解决方案都涉及网格
    4. 网格中的值通常是你要优化的值
    5. 每个单元格都是一个子问题,要考虑如何将问题分成子问题,找出网格的坐标轴
    6. 绘制网格
      • 单元格中的值是什么
      • 如何将这个问题划分成子问题
      • 网格的坐标轴是什么

      弗曼算法

      • 将问题写下来
      • 好好思考
      • 将答案写下来    

    七、K最邻近算法  

     

    每天进步一点点,不要停止前进的脚步~
  • 相关阅读:
    复制延迟排查
    [学习笔记]贪心
    主从复制延时判断以及脚本
    [学习笔记]尺取法
    RESET MASTER 和RESET SLAVE 命令的使用方法 注意事项
    女神(goddess)——组合数学
    主从同步设置的重要参数log_slave_updates
    埃及分数&&The Rotation Game&&骑士精神——IDA*
    多源复制开关复制命令和监控
    万圣节后的早晨&&九数码游戏——双向广搜
  • 原文地址:https://www.cnblogs.com/myworld7/p/6964970.html
Copyright © 2020-2023  润新知