数据结构和算法经典文章汇总

数据结构和算法[精选],传送门:
http://www.acmerblog.com/data-structure-algorithm-6107.html

文章包括以下内容:

数据结构
线性表:链表反转,跳跃表(Skip List)-实现(Java),链表排序,链表中倒数第k个结点, 调整数组顺序使奇数位于偶数前面

二叉树:二分查找树转化为排序的循环双链表,寻找二叉树两个节点的最低公共祖先,不使用递归和栈中序遍历二叉树,有序链表转化为平衡的二分查找树,找出二叉树中某个节点的所有祖先节点, 不使用递归和栈中序遍历二叉树, 二叉树非递归中序遍历, 二叉树非递归先序遍历, 二叉查找树的后序遍历结果,

栈:包含min函数的栈,直方图最大面积,中缀表达式转为后缀表达式,寻找下一个较大元素, 用栈来实现表达式求值

算法
排序和查找:无处不在的二分查找 ,基数排序(Radix Sorting),计数排序-Counting Sort,归并排序,堆排序,归并排序对链表进行排序,快速排序的随机化和非递归实现 ,快速排序算法及分析,0-n^2内的数排序,对接近有序的数组排序, 求第二小元素

贪心算法:任务选择问题,Kruskal最小生成树,霍夫曼编码,最小生成树Prim算法 , Dijkstra最短路径算法, Dijkstra算法-邻接表-最小堆实现

动态规划:重叠子问题的性质,最优子结构的性质,最长递增子序列,最长公共子序列,最小编辑距离(Edit Distance),最小花费路径,硬币找零,矩阵连乘,二项式系数,01背包问题,扔鸡蛋问题(Egg Dropping Puzzle) ,划分问题,最长回文子序列,数字转字母的编码方式的个数, 最长公共子串, Bellman-Ford最短路径算法

数学相关:扩展欧几里得算法,整数集合中找出3的最大倍数 , 阶乘末尾0的个数,幸运数字,卡特兰(Catalan)数,巴比伦算法求平方根,整数集合中找出3的最大倍数,质因数分解及算法实现,康托展开式, 约瑟夫环的数学优化方法, 整数中1出现的次数

位运算:能被3整除的数,Single Number I,Single Number II,判断两个数是否符号相反,位运算做除法,寻找缺失的数字,不用加减乘除做加法

图论:BFS和DFS ,最大流问题-Ford-Fulkerson算法,判断强连通图,求强连通分量-Kosaraju算法, 二分图判断,有向无环图的最短路径, 拓扑排序, Graham’s Scan法求解凸包问题

回溯和剪枝:骑士旅游问题,分支限界法(1),分支限界法(2),分支限界法(3) ,n皇后问题,N皇后问题2(优化) , 哈密顿回路-回溯法

分治:最接近点对问题,两个有序数组的中位数,棋盘覆盖问题

模式匹配:BF算法到KMP算法,KMP算法(1),KMP匹配算法(2)优化,有限自动机

高级数据结构

字典树(Trie树),并查集,并查集优化,后缀树简介, 后缀数组及应用, 区间树 , 区间最值查询-线段树, B树(一)概述和C++实现, B树(二)插入操作的实现, 线段树入门-求给定区间的和 ,

高级算法

遗传算法-入门,旅行商(TSP)问题-遗传算法, 模拟退火算法-TSP问题,概率算法求解π

算法分析

渐进分析,循环的时间复杂度,递归的时间复杂度, 快速排序算法及分析 , NP完全性理论与近似算法

你可能感兴趣的:(数据结构和算法-精选)