精选了一系列很棒的学习或者练习算法的网址、项目等,受到 awesome-awesomeness 以及其他 awesome 系列项目的启发。
一些你可以用来学习经典算法的网站。
-
A Visual Guide to Graph Traversal Algorithms - 一个交互式可视化学习图遍历算法的网站。
-
W3School - 完善的数据结构和算法的教程,相关代码很详细。
-
Algorithm Visualizer - 数十种动画算法(带有代码),你还可以创建自己的动画算法。
-
Algorithms Visualization - 关于算法可视化的一些文章。
-
Big-O Cheat Sheet - 涵盖了计算机科学领域通用算法的大 O 复杂度。
-
Code-Drills - 算法问题推荐(包括 Codeforces, Codechef 和 Spoj 平台)。
-
CP-Algorithms - 介绍在计算机领域流行的算法与数据结构的网站。
-
Data Structure Visualizations - 以动画展示你对一些数据结构的操作的网站。
-
Geeks for Geeks - 包含大量解释详细并且完全实现的算法。
-
Path Finding - 可视化展示一些图论算法,比如 A,IDA,BFS 等等。
-
Programiz - 易于学习的数据结构和算法教程,配有完善的代码示例。
-
Rosetta Code - 一个编程主题站点,旨在以不同的编程语言介绍许多算法和数据结构的实现。
-
Sorting Algorithms - 简洁易懂的排序算法动画,附有代码和评论。
-
Stoimen's web log - 包含一些解释得很棒的算法。
-
The Sound of Sorting - 排序算法的声音,在听觉和视觉上感受排序算法。
-
VisuAlgo - 通过动画将数据结构和算法可视化展示。
-
Learnersbucket - 使用 JavaScript 实现的数据结构和算法教程。
-
redblobgames - 交互可视化的算法解释,使用电脑游戏当中的一些例子。
一些免费并且高质量的在线课程。
- Algorithms: Divide and Conquer, Sorting and Searching, and Randomized Algorithms - 主要的内容有:大 O 渐进表示法、排序和搜索、分治**以及随机算法。
- Algorithms: Graph Search, Shortest Paths, and Data Structures - 主要的内容有:数据结构,图原语及其应用。
- Algorithms: Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming - 主要的内容:贪心算法和动态规划。
- Algorithms: Shortest Paths Revisited, NP-Complete Problems and What To Do About Them - 主要的内容:最短路径,NP 完备性和它对算法设计者的意义,以及处理计算棘手问题的策略。
- Algorithms, Part I - 本课程涵盖了每个程序员需要知道的算法和数据结构的基本信息。第一部分介绍基本的数据结构、排序和搜索算法。
- Algorithms, Part II - 第二部分重点介绍图和字符串处理算法。
- Khan Academy Algorithms - 由 Tomas Cormen 和 Devin Balkcom 主持的算法课程。
- MIT - 6-006 - 解释得很好的算法。
- MIT - 6-046j - 类似于前一个,只不过是不同的算法。
- MIT - 6-00sc - 这是一个简单而又解释得很好的算法介绍。
- Udacity Intro to Algorithms - 基于 Python 的算法课程。
- Algorithms in Motion - 这是一门面向算法初学者,使用了大量有趣的插图,基于书籍《Grokking Algorithms》的算法课程。
学习算法的一些常见书籍。
- Algorithm Design - 非常简洁直白的算法分析书籍。
- Algorithms - 使用 Java 实现的算法示例,良好的实践,可视化教程,带有免费的在线资源。
- Algorithms and Data Structures in JavaScript - 经典的算法和数据结构,由 JavaScript 实现。
- Algorithms in a Nutshell - 由 George T. Heineman 撰写。
- 算法·第四版 - 算法领域的经典书籍,涵盖每位程序员应知应会的 50 种算法。
- 算法导论 - 经典算法书籍,内容丰富、结构合理、逻辑清晰。
- 大话数据结构 - 以趣味的方式叙述数据结构,并引用了各种生活知识来类比。
- 啊哈!算法 - 一本充满智慧和趣味的算法入门书。
- 算法图解 - 示例丰富,图文并茂,以让人容易理解的方式阐释了算法。
- The Technical Interview Cheat Sheet
- Princeton DS Cheat Sheet
- CLRS in short
- Rice university DS course in short
- Useful Reddit thread
- Algo Deck
一些使用各种编程语言实现算法的仓库。
- c-algorithms by @fragglet,一些使用 C 语言实现的常用数据结构及算法。
- TheAlgorithms/C by @TheAlgorithms,The Algorithms 系列的 C 语言实现。
- xtaci/algorithms by @xtaci,使用 C++ 实现的数据结构和算法。
- PetarV-/Algorithms by @PetarV-,包含一些高级数据结构和算法。
- ProAlgos-Cpp by @ProAlogs,C++ 实现的一些知名的算法。
- algorithmica-org/implementations by @algorithmica-org,一些算法的简洁实现。
- classic-algorithms-c-sharp by @shkolovy,使用 C# 实现的经典算法。
- C-Sharp-Algorithms by @aalhour,标准的数据结构和算法。
- Advanced-Algorithms by @justcoding121,100+ 数据结构和算法的例子。
可以从这些网站中练习你学习到的相关知识。
- A2 Online Judge - Online Judge and problem archive.
- ACM-ICPC Live Archive - Hundreds of problems from previous ACM-ICPC Regionals and World Finals.