大学程序员必须掌握的核心算法。
程序员必须掌握的核心算法。
十大排序算法
简单排序插入排序,
选择排序和气泡排序(必需)
分而治之排序:快速排序,归并排序(必选,快速排序也要注意中轴线的选取方法)
分配排序桶排序,基数排序
树排序:堆排序(必需)
其他:计数排序(必选),希尔排序。
图论算法
图的表示:邻接矩阵和邻接表
遍历算法:深度搜索和广度搜索(必需)
最短路径算法:FLOYD,DIJKSTRA(必需)
最小生成树算法:PRIM,KRUSKAL(必需)
实用算法:关键路径、扩展和抖动排序(原理和应用)
二分匹配:配对,匈牙利算法(原理和应用)
扩展:中心性算法,社区发现算法(原理和应用)
搜索和回溯算法
贪婪算法(必需)
信令搜索算法:A*寻路算法(理解)
地图着色算法,N皇后问题,最优加工顺序旅行商问题。
动态规划
树DP:01背包问题
线性DP:最长的公共* * *千序列和最长的公共* * *子串。
区间DP:矩阵的最大值(和与积)
数字DP:数字游戏
状态压缩DP:旅行推销员
字符匹配算法
正则表达式
模式匹配:KMP,博耶-摩尔
流相关算法
最大流:最短增广路径,DINIC算法
最大流最小割:最大流域收集问题,网格接入问题
最小费用最大流量:最小费用道路,娱乐