那些程序员应该掌握的算法

排序
  • 冒泡排序
  • 选择排序
  • 插入排序(二分插入)
  • 希尔排序
  • 堆排序
  • 快速排序
  • 归并排序(二路归并,多路归并,Timsort排序算法)
  • 计数排序
  • 桶排序
  • 基数排序
  • 拓扑排序
搜索
  • Dfs
  • Bfs
  • 二分搜索
  • 三分搜索
最值与查询
  • RMQ
  • 树状数组
  • 线段树
最短路
  • Dijkstra算法
  • Bellman-Ford算法
  • Floyd算法
  • SPFA算法
  • 差分约束
  • A*算法
最小生成树
  • Kruskal算法
  • Prim算法
数学
  • 最大公因数
  • 最大公约数
  • 辗转相除法
  • 扩展GCD算法
  • 大数问题
  • 乘法逆元
  • 线性同余式解法
  • Lucas定理
  • 中国剩余定理
  • 欧拉函数
  • 欧拉降幂公式
  • 费马大定理
  • 费马小定理
素数问题
  • 素数的筛法
  • 素因子的求法
几何
  • 叉积/面积
  • 凸包
  • Graham扫描法
  • 直线相交/线段相交
  • 点在多边形内的判定
  • 面积交/面积并
矩阵
  • 行列式的计算
  • 快速幂
  • 路径的种数
线性方程组
  • 克莱姆法则
  • LU分解
  • 高斯消元法
  • 追赶法
字符串
  • 普通KMP
  • 扩展KMP
  • AC自动机
  • 回文自动机
  • 后缀数组
  • 后缀自动机
  • Boyer-Moore算法
  • Sunday算法
二分图
  • 匈牙利算法
  • KM算法
强连通
  • Tarjan算法
  • Korasaju算法
  • 割点和桥
网络流
  • Edmond-Karp算法
  • Ford_Fulkerson算法
  • Dinic算法
  • 最大流/最小割/费用流
动态规划
  • 递推/递归
  • 记忆化搜索
  • 状态压缩
  • 数位/区间/树形
  • 数字三角形
  • 石子合并
  • 01背包
  • 完全背包
  • 矩阵链乘
  • 最大子段和
  • 最长上升子序列
  • 最长公共子序列
树相关
  • 树上倍增/公共祖先
  • 树链剖分
  • 树的分治
  • 动态树
  • 虚树
其他
  • 枚举
  • 贪心
  • 回溯
  • 分治
  • 二进制
  • 博弈论
  • 分块
  • 莫队/树上莫队
  • 爬山算法
  • 随机增量法
  • 容斥原理与莫比乌斯反演
  • 快速傅里叶变换

你可能感兴趣的:(Algorithm,Data,Structure)