程序員必須掌握的核心算法
十大排序算法
簡單排序插入排序、
選擇排序、冒泡排序(必學)
分治排序:快速排序、歸並排序(必學,快速排序還要關註中軸的選取方式)
分配排序桶排序、基數排序
樹狀排序:堆排序(必學)
其他:計數排序(必學)、希爾排序
圖論算法
圖的表示:鄰接矩陣和鄰接表
遍歷算法:深度搜索和廣度搜索(必學)
最短路徑算法:FLOYD,DIJKSTRA(必學)
最小生成樹算法:PRIM,KRUSKAL(必學)
實際算法:關鍵路徑、拓抖排序(原理與應用)
二分圖匹配:配對、匈牙利算法(原理與應用)
拓展:中心性算法、社區發現算法(原理與應用)
搜索與回溯算法
貪心算法(必學)
信發式搜索算法:A*尋路算法(了解)
地圖著色算法、N皇後問題、最優加工順序旅行商問題
動態規劃
樹形DP:01背包問題
線性DP:最長公***千序列、最長公***子串
區間DP:矩陣最大值(和以及積)
數位DP:數字遊戲
狀態壓縮DP:旅行商
字符匹配算法
正則表達式
模式匹配:KMP、BOYER-MOORE
流相關算法
最大流:最短增廣路、DINIC算法
最大流最小割:最大收盆問題、方格取數問題
最小費用最大流:最小費用路、消遣