Awesome Algorithms
Awesome Algorithms
A curated list of awesome places to learn and/or practice algorithms.
Inspired by awesome-awesomeness and all the other awesome Awesome libraries.
If you want to contribute, please read the [contribution guidelines] (https://github.com/tayllan/awesome-algorithms/blob/master/CONTRIBUTING.md).
Websites
Websites you should use to learn classic algorithms
- Wikipedia - Algorithms - Of course!!
- Wikipedia - Data Structures - and why not ?!!
- Geeks for Geeks -
Lots and lots of well explained and implemented algorithms. - Data Structure Visualizations - Visualize the behavior of Data Structures and play with its operations.
- Algorithms Visualization - A dense article on Algorithms Visualization.
- Big-O Cheat Sheet - Big-O complexities of common algorithms used in Computer Science.
- stoimen's web log - Some algorithms nicely explained.
- VisuAlgo - Visualising data structures and algorithms through animation.
- Algomation - A didactic, animated, exposition of algorithms.
- Algorithmist - The Algorithmist is a resource dedicated to anything algorithms - from the practical realm, to the theoretical realm. There are also links and explanation to problemsets.
- Learn Algorithms - A website that explains some algorithms very well and simply, even for the most novice of programmers.
Online Courses
Free and High Quality Courses Online
- MIT - 6-00sc -
An easy and well explained introduction to algorithms. - MIT - 6-006 -
Well explained algorithms. - MIT - 6-046j -
Similar to the previous one, but with different algorithms. - YogiBearian YouTube Channel - Lots of well explained vidoes on various computer science subjects.
- Algorithms: Design and Analysis, Part 1 - Course mainly based on the book "Introduction to Algorithm".
- Algorithms: Design and Analysis, Part 2 - Second part, focusing on Greedy and Dynamic paradigms, and NP-Complete problems.
- Udacity Intro to Algorithms - Python-based Algorithms course.
- Khan Academy Algorithms - Algorithm course ministred by Tomas Cormen and Devin Balkcom.
Books
The most highly regarded books to learn algorithms
- Introduction to Algorithms - Essential!
- The Algorithm Design Manual - Easy to read and full of real world examples.
- Algorithm Design - Pretty straight-forward.
- The Art of Computer Programming - The Book.
- Elementary Algorithms - An awesome book about algorithms and data structures.
- Data Structures Using C - The basic concepts and usages of data structures.
- Algorithms - Problems explained with Java, OO good practices, visualizations, and free online resources.
- Swift Algorithms & Data Structures - A practical guide to concepts, theory and code.
- Grokking Algorithms - An illustrated book on algorithms with practical examples.
Github Libraries
Implementations of the most classic algorithms in a wide variety of programming languages
- C
- CoffeeScript
- C#
- by @sorrentmutie
- by @shkolovy
- by @aalhour
- C++
- Erlang
- Go
- Java
- by @phishman3579
- by @asmolich
- by @psjava
- by @jeandersonbc
- by @pedrovgs
- JavaScript
- by @felipernb
- by @nzakas
- by @duereg
- by @mgechev
- Objective-C
- by @ EvgenyKarkan
- Python
- by @nryoung
- by @prakhar1989
- by @laurentluce
- Ruby
- [by @kanwei] (https://github.com/kanwei/algorithms)
- [by @sagivo] (https://github.com/sagivo/algorithms)
- Scala
- Swift
- [by @kingreza] (https://github.com/kingreza/Swift-Algorithms-Strings-)
- [by @waynewbishop] (https://github.com/waynewbishop/SwiftStructures)
- Language agnostic
- by @kennyledet
- by @indy256
- by @sagivo
- by @patmorin
Online Judges
Online Judges to practice what you learned above
- UVA -
Hundreds of problems (from previous ACM-ICPC Regionals, World Finals and others). - SPOJ - More problems.
- ACM-ICPC Live Archive -
Hundreds of problems from previous ACM-ICPC Regionals and World Finals. - URI -
Brazilian Online Judge. Not so much problems, but it's growing and it has online contests. - CodeChef -
More problems and monthly online contests. - CodeMarshal -
Real world contests online! - ProjectEuler -
Mathematical problems that can be solved using algorithms (or just a pencil, depends on how much you already know). - TopCoder - Lots of problems and real world/money worthy problems in Graphic Design, Data Science and Development.
- Learneroo Algorithms Tutorials - Learn and practice algorithms by solving challenges online.
- Infoarena - Romanian Online Judge. 1500+ algorithmic problems
- AIZU ONLINE JUDGE - Japanese Online Judge.
- PKU JudgeOnline - Chinese Online Judge.
- Rosalind - A platform for learning bioinformatics and programming through problem solving.
- LavidaOnlineJudge - Korean Online Judge(Half English). 1300+ problems.
- LeetCode - Learn algorithms and prepare for interviews.
- HackerRank - Featured algorithm and functional programming online judges
- HackerEarth - Practice alogrithmic problems & challenges and participate in hiring challenges.
- Codeforces - The only programming contests Web 2.0 platform
- CoderByte - A decent website with algorithm challenges from beginner to advanced levels. Supports most of the popular languages like C++, python, javascript, ruby.
- ShareCode.io - Online Judge and contest host with a lot of algorithmic problems in the archive to practice.
Tools
Some tools that can help you in the learning of algorithms
- flow-chart.js -
A tool that allows you to create flowcharts that can simulate real algorithms. - interactive-coding-challenges - Interactive, test-driven coding challenges (algorithms and data structures).
License
And for the sake of copyleft, here's our license:

This work is licensed under a Creative Commons Attribution 4.0 International License.
Awesome Algorithms的更多相关文章
- 剪短的python数据结构和算法的书《Data Structures and Algorithms Using Python》
按书上练习完,就可以知道日常的用处啦 #!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving wit ...
- OpenCascade Modeling Algorithms Fillets and Chamfers
Modeling Algorithms Fillets and Chamfers 造型算法——倒圆与倒角 eryar@163.com 一.倒圆Fillet Constructor 1. BRepFil ...
- OpenCascade Modeling Algorithms Boolean Operations
Modeling Algorithms Boolean Operations of Opencascade eryar@163.com 布尔操作(Boolean Operations)是通过两个形状( ...
- Machine Learning Algorithms Study Notes(3)--Learning Theory
Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...
- Machine Learning Algorithms Study Notes(2)--Supervised Learning
Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...
- Machine Learning Algorithms Study Notes(1)--Introduction
Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 目 录 1 Introduction 1 1.1 ...
- Algorithms, Part I by Kevin Wayne, Robert Sedgewick
Welcome to Algorithms, Part I 前言 昨天在突然看到了Coursera上Robert Sedgewick讲的Algorithms,Part II看了一些,甚是爽快,所以又去 ...
- LTE Module User Documentation(翻译13)——频率复用算法(Frequency Reuse Algorithms)
LTE用户文档 (如有不当的地方,欢迎指正!) 19 Frequency Reuse Algorithms(频率复用算法) 本节我们将描述如何在 LTE 仿真中使用频率复用(FR)算法.共有两 ...
- 算法分析 Analysis of Algorithms -------GeekforGeeker 翻译
算法分析 Analysis of Algorithms 为什么要做性能分析?Why performance analysis? 在计算机领域有很多重要的因素我们要考虑 比如用户友好度,模块化, 安全性 ...
- Virtual Memory DEMAND PAGING - The avoidance of thrashing was a major research area in the 1970s and led to a vari- ety of complex but effective algorithms.
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION With the use of pagin ...
随机推荐
- ibatis.net demo
1. download ibatis.nethttps://code.google.com/p/mybatisnet/ 2. add all dll as reference to your proj ...
- 客户端通过spice-gtk实现USB重定向
1.安装必要的工具: sudo apt-get install build-essential autoconf git-core intltool 2.安装必要的依赖包: -dev libxfixe ...
- 学习KnockOut第一篇之Hello World
学习KnockOut第一篇之Hello World 笔者刚开始学习KnockOut.写的内容就相当于一个学习笔记.且在此处向官网致敬,比较喜欢他们家的Live Example版块,里面有jsFiddl ...
- 如何用jmeter对websock和protobuf进行压力测试
1. 一个websocket插件官网地址 https://github.com/maciejzaleski/JMeter-WebSocketSampler 2. 可以用上述插件,也可以自己扩展,以实现 ...
- 不能用100%ie6不兼容
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Eclipse中创建标准web工程以及标准目录结构说明
最近公司有个Web项目,项目结构如下: 虽然运行没有错,但是实在是别扭,标准的web应用一般不采用这种结构: 因此总结一下: 1.如何在Eclipse中创建一个标准的Web应用. 2. ...
- Webbrowser 取消下载提示框
在使用Webbrowser抓取网页信息时,碰到需要下载文件,这时需要用户介入操作,如何避免: 首先引进 [DllImport("urlmon.dll", CharSet = Cha ...
- NGINX的奇淫技巧 —— 6. IF实现数学比较功能 (1)
NGINX的奇淫技巧 —— 6. IF实现数学比较功能 (1) ARGUS 1月13日 发布 推荐 0 推荐 收藏 3 收藏,839 浏览 nginx的if支持=.!= 逻辑比较, 但不支持if中 & ...
- Embedding Lua in C: Using Lua from inside C.
Requirments: 1: The Lua Sources. 2: A C compiler - cc/gcc/g++ for Unix, and Visual C++ for Wi ...
- java001-Helloworld
public class test05 { public static void main(String[] args) { System.out.println("Hello World! ...