Algorithms

A repository for some classic algorithm, including:

1.Eratosthenes筛法,或另一种素数筛法

2.深度优先搜索

3.广度优先搜索

4.Dijkstra算法

5.Floyd–Warshall 算法

6.Either Kruskal算法 或称 Prim算法

7.一些拓扑排序的实现,比如使用DFS

8.凸包(我推荐单调链算法)

9.坐标压缩

10.Edmonds–Karp,或者Ford–Fulkerson方法的另一种实现;亦或预流推进算法;又或者,如果你在准备ACM codebook,那么就Dinic算法。(注意:最大流不允许出现在国际资讯赛中,尽管如此,它也可能会出现在国家队选拔赛中。)

http://blog.jobbole.com/tag/%e7%ae%97%e6%b3%95/

算法

图搜索 (广度优先、深度优先)深度优先特别重要 排序 动态规划 匹配算法和网络流算法 正则表达式和字符串匹配

数据结构

图 (树尤其重要) Map 堆 栈/队列 Tries | 字典树

额外推荐

贪婪算法 概率方法 近似算法

上面是 Arjun Nayini 的推荐,下面是 Ken George 的推荐

注:下面这个没有特定优先级

算法

三路划分-快速排序 合并排序(更具扩展性,复杂度类似快速排序) DF/BF 搜索 (要知道使用场景) Prim / Kruskal (最小生成树) Dijkstra (最短路径算法) 选择算法

数据结构

HashMap (真的要知道所有哈希结构) 图和树(红黑树很好学) (red-black trees are good to learn) 堆(优先级队列) 栈/队列(必须知道的基础内容) Tries | 字典树

A *和遗传算法也很有趣。

欢迎大家补充。

伯乐在线另补充一些相关文章:

《**世界的十大算法》 《真正**世界的十大算法》 《视觉直观感受 7 种常用的排序算法》 《可视化对比十多种排序算法(C#版)》

http://top.jobbole.com/14753/ // 点击“阅读原文”,可查看上面补充的相关文章