这篇博客旨在为我之前写的几篇博文和以后会写的博文提供一个索引。这些博文会用C++语言改写Robert Sedgewick 与 Kevin Wayne 的著作Algorithm(4th)的部分算法。所以这些文章都不会对算法做出很详细的解释。如果有需要还请查找相关算法更详细的内容。该博文对书本起辅助作用。
(这本书写的还算不错,不确定买哪本算法书的可以考虑下)
章节 | 算法(点击超链接可跳转) | 描述 |
---|---|---|
基础 | union-find算法 | 求连通分支数 |
排序 | 基础排序算法 | 选择排序插入排序希尔排序 |
排序 | 归并排序 | 基于归并法的排序 |
排序 | 快速排序 | 最常用的排序方式之一 |
排序 | 堆排序 | 基于二叉堆的排序 |
排序 | 优先队列 | 元素具有优先级的队列 |
选择 | 二分查找 | 基于二分法的查找 |
选择 | 二叉查找树 | 构造二叉树用于查找 |
选择 | 红黑树 | 构造平衡的二叉树 |
选择 | 基于拉链法的哈希表 | 使用二维数组处理碰撞 |
选择 | 基于线性探测法的哈希表 | 调成储存位置处理碰撞 |
图 | 无向图 | 使用邻接矩阵构造无向图 |
图 | DFS | 优先搜索子节点的图搜索 |
图 | BFS | 优先搜索兄弟节点的图搜索 |
图 | 有向图 | 使用邻接矩阵构造有向图及其API |
图 | 拓扑排序 | 解决优先限制下的调度问题 |
图 | kosaraju算法 | 计算强连通分量 |
图 | 带权无向图及kruskal算法 | 带权无向图最小生成树 |
图 | prim算法 | 求最小生成树的算法 |
图 | dijkstra算法 | 求无负权加权图最短路径 |
图 | Bellman-Fond算法 | 求无负权重圈的图的最短路径 |
字符串 | 低位优先的字符串排序 | 从后往前的字符串排序算法 |
字符串 | 高位优先的字符串排序 | 从前往后进行的字符串排序 |
字符串 | 三向快速字符串排序 | 针对字符串的快速排序 |
字符串 | 单词查找树 | 快速匹配字符串的数据结构 |
字符串 | KMP算法 | 较快的寻找子字符串的算法 |
字符串 | Boyer-Moore算法 | 更快的寻找子字符串的算法 |
字符串 | Rabin-karp算法 | 指纹字符串查找算法 |
字符串 | 正则表达式 | NFA正则表达式匹配模式 |
字符串 | 游程编码 | 二进制文件压缩机制 |
字符串 | 霍夫曼压缩 | 文件压缩机制 |
字符串 | LZW压缩 | 利用定长前缀码压缩文件 |
关于我一直使用STL这件事,我用C++ STL是基于以下几点考虑:
- STL更加的安全,不容易发生内存泄漏等问题
- STL与java的语法更加相像,所以更方便执行书中的操作,也更方便理解
- STL有很多现成的方法,方便我们进行调用而不必过多的重新构造相应方法