diff --git a/README.md b/README.md index b46c48a..0c56b30 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ ##学习方法 -1) 把所有经典算法写一遍 -2) 看算法源码 -3) 加入算法学习社区,相互鼓励学习 -4) 看经典书籍 +1. 把所有经典算法写一遍 +2. 看算法源码 +3. 加入算法学习社区,相互鼓励学习 +4. 看经典书籍 >如果你想为该项目贡献点什么,可以先加我个人微信:tiger-ran,非诚勿扰~:) @@ -17,22 +17,22 @@ 这些算法全部自己敲一遍: ###二叉树 -二叉树 -二叉查找树 -Trie树(前缀树) -后缀树 -最优二叉树(赫夫曼树) -伸展树(splay tree 分裂树) -平衡二叉树AVL -红黑树 -B树(B-),B+,B* -R树 +* 二叉树 +* 二叉查找树 +* Trie树(前缀树) +* 后缀树 +* 最优二叉树(赫夫曼树) +* 伸展树(splay tree 分裂树) +* 平衡二叉树AVL +* 红黑树 +* B树,B+,B* +* R树 -二叉堆 (大根堆,小根堆) -二项树 -二项堆 -斐波那契堆(Fibonacci Heap) +* 二叉堆 (大根堆,小根堆) +* 二项树 +* 二项堆 +* 斐波那契堆(Fibonacci Heap) ###哈希表/散列表 (Hash Table) @@ -40,18 +40,18 @@ R树 ###字符串算法 -BF算法 -KMP算法 -BM算法 +* BF算法 +* KMP算法 +* BM算法 ###图的算法 -图的存储结构和基本操作(建立,遍历,删除节点,添加节点) -最小生成树 -拓扑排序 -关键路径 -最短路径: Floyd,Dijkstra,bellman-ford,spfa +* 图的存储结构和基本操作(建立,遍历,删除节点,添加节点) +* 最小生成树 +* 拓扑排序 +* 关键路径 +* 最短路径: Floyd,Dijkstra,bellman-ford,spfa @@ -59,47 +59,47 @@ BM算法 **交换排序算法** -插入排序 -选择排序 -希尔排序 - -堆排序 -快排 -归并排序 +* 冒泡排序 +* 插入排序 +* 选择排序 +* 希尔排序 +* 快排 +* 归并排序 +* 堆排序 **线性排序算法** -基数排序 +* 基数排序 ### 查找算法 -顺序表查找:顺序查找 -有序表查找:二分查找 -分块查找: 块内无序,块之间有序;可以先二分查找定位到块,然后再到`块`中顺序查找 中使用顺序查找(这里之所以叫 `动态查找表`,是因为表结构是查找的过程中动态生成的) -动态查找: 二叉排序树,AVL树,B- ,B+ -哈希表: O(1) +* 顺序表查找:顺序查找 +* 有序表查找:二分查找 +* 分块查找: 块内无序,块之间有序;可以先二分查找定位到块,然后再到`块`中顺序查找 +* 动态查找: 二叉排序树,AVL树,B- ,B+ (这里之所以叫 `动态查找表`,是因为表结构是查找的过程中动态生成的) +* 哈希表: O(1) ###15个经典基础算法 -A*寻路算法: 求解最短路径 -Dijkstra:最短路径算法 +* A*寻路算法: 求解最短路径 +* Dijkstra:最短路径算法 >(八卦下:Dijkstra是荷兰的计算机科学家,提出”信号量和PV原语“,"解决哲学家就餐问题",”死锁“也是它提出来的) -DP (动态规划 dynamic programming) -BFS/DFS (广度/深度优先遍历) -红黑树 (一种自平衡的`二叉查找树`) -KMP 字符串匹配算法 -遗传算法 -启发式搜索 -图像特征提取之SIFT算法 -傅立叶变换 -Hash -快速排序 -SPFA(shortest path faster algorithm) 单元最短路径算法 -快递选择SELECT +* DP (动态规划 dynamic programming) +* BFS/DFS (广度/深度优先遍历) +* 红黑树 (一种自平衡的`二叉查找树`) +* KMP 字符串匹配算法 +* 遗传算法 +* 启发式搜索 +* 图像特征提取之SIFT算法 +* 傅立叶变换 +* Hash +* 快速排序 +* SPFA(shortest path faster algorithm) 单元最短路径算法 +* 快递选择SELECT