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 ...
随机推荐
- 时序图 Sequence Diagram
时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的. 时序图中显示的是参与交互的对象及其对象之间消息交互的顺序. 下面这张图介绍了时序图的基本内容: 下面这张 ...
- 【个人笔记】001-PHP基础-01-PHP快速入门-01-PHP职业路线及PHP前景
001-PHP基础-01-PHP快速入门 01-PHP职业路线及PHP前景 PHP职业路线 PHP初级工程师 1年以下 3k-6k PHP中级工程师 1-3年6k-10k PHP高级工程师 3年以上 ...
- as3.0服务端FMS软件常用的方法与属性参考示例
转自:http://www.cuplayer.com/player/PlayerCode/RTMP/2012/0918429.html Application类的方法汇总方法 描述Applicatio ...
- 视频FMS服务器带宽成本分析
一.现状 调查了一下,主要有两种主流方式,WebRTC或者Flash. 1. WebRTC(不支持IE浏览器,已排除):网页实时通信(英语:Web Real-Time Communication)的缩 ...
- Matlab中sort函数的使用
主要看大神们如何使用,先模仿. [~,y] = sort(v),如果v是向量,那么y返回的是v中的下标(不好表达),看下面的,发现y是是下标,对应的是c中元素*(由小到大排序).使用c(y)就得到了由 ...
- 基于密度的聚类之Dbscan算法
一.算法概述 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法.与划分和层次 ...
- 错误:没有为扩展名“.html”注册的生成提供程序。
没有为扩展名“.html”注册的生成提供程序.可以在 machine.config 或 web.config 中的 <compilation><buildProviders> ...
- 【MongoDb--初入江湖】windows下安装MongoDb
一.windows下安装MongoDb http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/
- hibernate Session
转: http://kayo.iteye.com/blog/204143 Session 接口 Session 接口对于Hibernate 开发人员来说是一个最重要的接口.然而在Hibernate 中 ...
- Java学习第一篇:变量,数据类型,运算符,流程控制(简介)
一.安装和配置jdk 1.jdk是什么? (1).jdk全称是Java Development Kit, Java开发工具包; (2).jdk是sun公司开发的; (3).jdk主要包括:jre(Ja ...