程序员需要掌握的算法
数据结构与算法算法基础基础数据结构数组栈与队列线性表哈希表(散列表)树图常见算法十大排序算法图论算法搜索与回溯算法动态规划字符串匹配算法流相关算法
数据结构与算法
基本算法思想动态规划贪心算法回溯算法分支算法枚举算法算法基础
时间复杂度空间复杂度最大复杂度平均复杂度基础数据结构
数组
动态数组树状数组矩阵栈与队列
栈队列阻塞队列并发队列双端队列优先队列堆多级反馈队列线性表
顺序表链表单链表双向链表循环链表双向循环链表跳跃表并查集
哈希表(散列表)
散列函数碰撞解决办法:开放地址法链地址法再次哈希法建立公共溢出区布隆过滤器位图动态扩容树
二叉树:各种遍历,递归与非递归二叉查找树平衡二叉树平衡二叉搜索树AVL树红黑树完全二叉树多路查找树B树B+树2-3树2-3-4树哈夫曼树与编码前缀树线段树堆小顶堆大顶堆二项堆优先队列斐波那契堆图
图的存储邻接矩阵邻接表关键路径最小生成树最短路径拓扑排序
常见算法
十大排序算法
简单排序:插入排序选择排序冒泡排序分值排序:快速排序:注意轴的选取方式归并排序分配排序:桶排序基数排序树状排序:堆排序计数排序希尔排序图论算法
图的表示:邻接矩阵邻接表遍历算法:深度搜索广度搜索查找算法:二分查找散列表查找树结构查找最短路径算法:FloydDijkstra最小生成树算法:PrimKruskal实际常用算法:关键路径拓扑排序二分图匹配:配对算法匈牙利算法拓展:中心性算法社区算法并查集搜索与回溯算法
贪心算法启发式搜索算法:A*寻路算法地图着色算法N皇后问题最优加工算法旅行商问题动态规划
树形DP:01背包问题线性DP:最长公共子序列最长公共子串区间DP:矩阵最大值矩阵最大和矩阵最大积数位DP:数字游戏状态压缩DP:旅行商字符串匹配算法
正则表达式暴力匹配算法模式匹配:KMPBoyer-MooreTrie流相关算法
最大流:最短增广路Dinic算法最大流最小割:最大收益问题方格取数问题最小费用最大流:最小费用里消遣