大学程序员必须掌握的核心算法。

程序员必须掌握的核心算法。

十大排序算法

简单排序插入排序,

选择排序和气泡排序(必需)

分而治之排序:快速排序,归并排序(必选,快速排序也要注意中轴线的选取方法)

分配排序桶排序,基数排序

树排序:堆排序(必需)

其他:计数排序(必选),希尔排序。

图论算法

图的表示:邻接矩阵和邻接表

遍历算法:深度搜索和广度搜索(必需)

最短路径算法:FLOYD,DIJKSTRA(必需)

最小生成树算法:PRIM,KRUSKAL(必需)

实用算法:关键路径、扩展和抖动排序(原理和应用)

二分匹配:配对,匈牙利算法(原理和应用)

扩展:中心性算法,社区发现算法(原理和应用)

搜索和回溯算法

贪婪算法(必需)

信令搜索算法:A*寻路算法(理解)

地图着色算法,N皇后问题,最优加工顺序旅行商问题。

动态规划

树DP:01背包问题

线性DP:最长的公共* * *千序列和最长的公共* * *子串。

区间DP:矩阵的最大值(和与积)

数字DP:数字游戏

状态压缩DP:旅行推销员

字符匹配算法

正则表达式

模式匹配:KMP,博耶-摩尔

流相关算法

最大流:最短增广路径,DINIC算法

最大流最小割:最大流域收集问题,网格接入问题

最小费用最大流量:最小费用道路,娱乐