# awesome-algorithms

A curated list of awesome places to learn and/or practice algorithms.

^{[Embed]}

**20k**stars

**620**watching

**3k**forks

**24 days ago**

Linked from 11 awesome lists

## Awesome Algorithms / Websites | |||

A Visual Guide to Graph Traversal Algorithms | Interactive visualizations for learning how graph traversal algorithms work | ||

W3School | Data Structures tutorial | ||

CodeChef | Learning DSA by practice on Codechef | ||

Algorithm Visualizer | Dozens of animated algorithms (with code), and you can also create your own | ||

Algorithms Visualization | A dense article on Algorithms Visualization | ||

Big-O Cheat Sheet | Big-O complexities of common algorithms used in Computer Science | ||

Code-Drills | Practice problems recommender (includes Codeforces, Codechef, and Spoj) | ||

CP-Algorithms | Algorithms and data structures are especially popular in the field of competitive programming | ||

Data Structure Visualizations | Visualize the behavior of Data Structures and play with its operations | ||

Geeks for Geeks | Lots and lots of well-explained and implemented algorithms | ||

Path Finding | A visual representation of how algorithms such as A*, IDA*, Breadth-First-Search, Best-First-Search, and others describe a path between two points A and B | ||

Programiz | Easy to follow tutorials on data structures and algorithms along with suitable examples | ||

Rosetta Code | A programming chrestomathy site that aims to present implementations of many algorithms and data structures in different programming languages | ||

Sorting Algorithms | Nice and simple animations of sorting algorithms. With short codes and discussions | ||

Stoimen's web log | Some algorithms nicely explained | ||

The Sound of Sorting | The Sound of Sorting - "Audibilization" and Visualization of Sorting Algorithms | ||

VisuAlgo | Visualising data structures and algorithms through animation | ||

Wikipedia - Algorithms | Of course!! | ||

Wikipedia - Data Structures | and why not ?!! | ||

Learnersbucket | Tutorials on data structures and algorithms in Javascript | ||

redblobgames | interactive visual explanations of math and algorithms, using motivating examples from computer games | ||

## Awesome Algorithms / Online Courses | |||

Algorithms: Divide and Conquer, Sorting and Searching, and Randomized Algorithms | The primary topics are: asymptotic ("Big-oh") notation, sorting and searching, divide and conquer, and randomized algorithms | ||

Algorithms: Graph Search, Shortest Paths, and Data Structures | The primary topics are: data structures, graph primitives, and their applications | ||

Algorithms: Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming | The primary topics are: greedy algorithms and dynamic programming | ||

Algorithms: Shortest Paths Revisited, NP-Complete Problems and What To Do About Them | The primary topics are: shortest paths, NP-completeness and what it means for the algorithm designer, and strategies for coping with computationally intractable problems | ||

Algorithms, Part I | This course covers the essential information that every serious programmer needs to know about algorithms and data structures. Part I covers elementary data structures, sorting, and searching algorithms | ||

Algorithms, Part II | Part II focuses on graph- and string-processing algorithms | ||

Khan Academy Algorithms | Algorithm course ministered by Tomas Cormen and Devin Balkcom | ||

MIT - 6-006 | Well explained algorithms | ||

MIT - 6-046j | Similar to the previous one, but with different algorithms | ||

MIT - 6-00sc | An easy and well-explained introduction to algorithms | ||

MIT 18-409 - Topics in Theoretical Computer Science: An Algorithmist's Toolkit | It covers a collection of geometric techniques that apply broadly in modern algorithm design | ||

Udacity Intro to Algorithms | Python-based Algorithms course | ||

Algorithms in Motion | Beginner's algorithms course with fun illustrations, based on the book Grokking Algorithms | ||

## Awesome Algorithms / Books / Algorithms and Data structures | |||

Algorithm Design | Pretty straightforward | ||

Algorithms | Problems explained with Java, OO good practices, visualizations, and free online resources | ||

Algorithms and Data Structures in JavaScript | Classical algorithms and data structures implemented and explained using JavaScript | ||

Algorithms in a Nutshell | by George T. Heineman | ||

Classic Computer Science Problems in Python | -This great book presents dozens of coding challenges, ranging from simple tasks to clustering data using k-means | ||

Data Structures and Algorithms Made Easy | A great way to implement algorithms with their specific programmable tasks | ||

Data Structures Using C | The basic concepts and usages of data structures | ||

Elementary Algorithms | 6,064 | about 2 months ago | An awesome book about algorithms and data structures |

Grokking Algorithms | An illustrated book on algorithms with practical examples | ||

Introduction to Algorithms | Essential! | ||

Real World Algorithms: A Beginner's Guide | An introduction to algorithms for readers with no background in advanced mathematics or computer science | ||

Swift Algorithms & Data Structures | A practical guide to concepts, theory, and code | ||

The Algorithm Design Manual | Easy to read and full of real-world examples | ||

The Art of Computer Programming | The Book | ||

Structure and Interpretation of Computer Programs | |||

Advanced Algorithms and Data Structures | A different and a great way to introduce algorithms and data structures that can be used at work | ||

Algorithmic Puzzles | A very accessible illustration of algorithms in the forms of puzzles. No programming experience is required! | ||

Standford CS166 | Standford CS166, a course in the design, analysis, and implementation of data structures | ||

Grokking Data Structures | Grokking Data Structures carefully guides you from the most basic data structures like arrays or linked lists all the way to powerful structures like graphs. It’s perfect for beginners | ||

## Awesome Algorithms / Books / Algorithm Analysis | |||

Sedgewick & Flajolet. An Introduction to the Analysis of Algorithm | Am advanced complete survey, intended only for the mathematically matured reader | ||

McConnell. Analysis of Algorithms | A very accessible and brief book on algorithms analysis, with implemented code included | ||

Vrajitoru & Knight. Practical Analysis of Algorithms | A very accessible and brief book on algorithms analysis, with implemented code included | ||

## Awesome Algorithms / Books / Randomized Algorithms | |||

Motwani & Raghavan. Randomized Algorithms | A standard classic book | ||

Mitzenmacher & Upfal. Probability and Computing: Randomization and Probabilistic Techniques in Algorithms and Data Analysis | Standard text for probability methods and their applications on randomized algorithms | ||

## Awesome Algorithms / Cheat Sheets | |||

Tech Interview Cheat Sheet | 4,210 | 3 months ago | |

Princeton DS Cheat Sheet | |||

CLRS in short | |||

Rice university DS course in short | |||

Useful Reddit thread | |||

Algo Deck | 5,662 | 6 days ago | An open-source collection of +200 algorithmic cards |

## Awesome Algorithms / Github Libraries / C | |||

by @fragglet | 3,268 | 12 months ago | |

by @TheAlgorithms | 19,074 | 2 months ago | |

## Awesome Algorithms / Github Libraries | |||

CoffeeScript | 37 | over 7 years ago | |

## Awesome Algorithms / Github Libraries / C# | |||

by @shkolovy | 34 | over 7 years ago | |

by @aalhour | 5,926 | about 1 year ago | |

by @justcoding121 | 1,307 | almost 2 years ago | |

## Awesome Algorithms / Github Libraries / C++ | |||

by @xtaci | 5,245 | 2 months ago | |

by @PetarV- | 643 | over 2 years ago | |

by @faheel | 508 | 6 months ago | |

by @sslotin | |||

## Awesome Algorithms / Github Libraries | |||

Erlang | 156 | over 4 years ago | |

## Awesome Algorithms / Github Libraries / Go | |||

by @arnauddri | 1,853 | over 3 years ago | |

by @floyernick | 2,768 | 5 months ago | |

## Awesome Algorithms / Github Libraries / Java | |||

by @jpa99 | 127 | almost 4 years ago | |

by @phishman3579 | 4,443 | almost 2 years ago | |

by @asmolich | 14 | about 10 years ago | |

by @psjava | 72 | almost 4 years ago | |

by @jeandersonbc | 22 | almost 7 years ago | |

by @pedrovgs | 2,791 | 4 months ago | |

by @Erdos-Graph-Framework | 126 | about 1 year ago | |

by @deepak-malik | 142 | almost 3 years ago | |

by @yusufcakal | 24 | about 5 years ago | |

by @FarheenB | 141 | over 2 years ago | |

## Awesome Algorithms / Github Libraries / JavaScript | |||

by @jiayihu | 2,189 | about 7 years ago | |

by @felipernb | 3,729 | over 2 years ago | |

by @nzakas | 9,054 | 10 months ago | |

by @duereg | 927 | about 1 year ago | |

by @mgechev | 7,831 | 6 months ago | |

by @trekhleb | 187,629 | about 2 months ago | |

by @ManrajGrover | 199 | 8 months ago | |

by @amejiarosario | 7,585 | 9 months ago | |

by @zonayedpca | 110 | almost 2 years ago | |

## Awesome Algorithms / Github Libraries / Lua | |||

by @evandrolg | 50 | over 5 years ago | |

## Awesome Algorithms / Github Libraries / Objective-C | |||

by @ EvgenyKarkan | 2,423 | 23 days ago | |

## Awesome Algorithms / Github Libraries / PHP | |||

by @TheAlgorithms | 1,882 | 5 days ago | |

## Awesome Algorithms / Github Libraries / Python | |||

by @nryoung | 2,848 | almost 6 years ago | |

by @prakhar1989 | 3,041 | about 3 years ago | |

by @laurentluce | 277 | over 1 year ago | |

by @nbro | 59 | about 1 month ago | |

by @keon | 23,967 | 3 months ago | |

by @vinta | 690 | over 1 year ago | |

## Awesome Algorithms / Github Libraries / Ruby | |||

by @kanwei | 2,664 | 9 months ago | |

by @sagivo | 3,265 | about 2 years ago | |

by @kumar91gopi | 718 | 4 days ago | |

## Awesome Algorithms / Github Libraries | |||

Scala | 1,467 | about 1 year ago | |

## Awesome Algorithms / Github Libraries / Swift | |||

by @kingreza | 42 | over 7 years ago | |

by @waynewbishop | 2,099 | over 2 years ago | |

by @hollance | 28,770 | 5 months ago | |

## Awesome Algorithms / Github Libraries / Language agnostic | |||

by @kennyledet | 2,192 | almost 3 years ago | |

by @indy256 | 1,927 | about 1 month ago | |

by @sagivo | 3,265 | about 2 years ago | |

by @patmorin | 1,203 | over 2 years ago | |

by @btjanaka | 3 | 5 days ago | |

## Awesome Algorithms / Online Judges | |||

A2 Online Judge | Online Judge and problem archive | ||

ACM-ICPC Live Archive | Hundreds of problems from previous ACM-ICPC Regionals and World Finals | ||

AIZU ONLINE JUDGE | Japanese Online Judge | ||

Algo Muse | Research-based algorithmic problems | ||

AtCoder | Japanese programming contest website | ||

Baekjoon Online Judge | Korean Online Judge. 10000+ problems. Supports 60+ languages | ||

CS Academy | Holds online contests and IOI practice contests | ||

CodeChef | More problems and monthly online contests | ||

Codeforces | The only programming contests Web 2.0 platform | ||

Codefights | Practice programming and tackle your next tech interview | ||

CodeMarshal | Real-world contests online! | ||

CodeWars | A website that houses support to solve algorithms in many languages in varying difficulty | ||

CoderByte | A decent website with algorithm challenges from beginner to advanced levels. Supports most of the popular languages like C++, python, javascript, ruby | ||

Firecode | Firecode.io uses machine learning algorithms along with curated real-world interview questions, solutions & a vibrant social community of learners to get you ready for your next coding interview | ||

Coding Blocks | Website that has problems based on Maths, Data Structures, Various Algorithm and also conducts Coding Competition | ||

HackerEarth | Practice algorithmic problems & challenges and participate in hiring challenges | ||

HackerRank | Featured algorithm and functional programming online judges | ||

HiHoCoder | Chinese and English problem-solving practice and recruitment challenge site | ||

Infoarena | Romanian Online Judge. 1500+ algorithmic problems | ||

Interviewbit | Learn, practice, and prepare for interviews | ||

Kattis | Online judge and problem archive | ||

LavidaOnlineJudge | Korean Online Judge(Half English). 1300+ problems | ||

Learneroo Algorithms Tutorials | Learn and practice algorithms by solving challenges online | ||

LeetCode | Learn algorithms and prepare for interviews | ||

PKU JudgeOnline | Chinese Online Judge | ||

ProjectEuler | Mathematical problems that can be solved using algorithms (or just a pencil, depending on how much you already know) | ||

Rosalind | A platform for learning bioinformatics and programming through problem-solving | ||

ShareCode.io | Online Judge and contest host with a lot of algorithmic problems in the archive to practice | ||

Snakify | An introductory Python course with 100+ algorithmic problems and a step-by-step debugger (from Russia) | ||

SPOJ | More problems | ||

TopCoder | Lots of problems and real-world/money-worthy problems in Graphic Design, Data Science, and Development | ||

Toph | Bangladeshi Online Judge. Holds online contests regularly | ||

URI | Brazilian Online Judge. Not so many problems, but it's growing and it has online contests | ||

UVA | Hundreds of problems (from previous ACM-ICPC Regionals, World Finals, and others) | ||

Codility | Compete to land coding jobs at top companies | ||

## Awesome Algorithms / Blogs | |||

An awesome list for competitive programming! | Awesome blog for all the resources and list of books and algorithms | ||

Algorithms Weekly | A good blog by Petr Mitrichev, mainly in Java | ||

Sport of Programming | Informative blog for starting with the sport of programming | ||

Algorithms and Data Structures | For getting a deeper knowledge of algorithms and how to think in the right direction | ||

Algorithm Tutorials by Tanuj Khattar | Excellent blog by Tanuj Khattar. Covers tutorials on some interesting data structures along with example problems to solve | ||

## Awesome Algorithms / Tools | |||

interactive-coding-challenges | 29,406 | 5 months ago | Interactive, test-driven coding challenges (algorithms and data structures) |

## Awesome Algorithms / Related Awesome Lists | |||

Math | 8,732 | 23 days ago | Freely available lecture notes on mathematics |

Theoretical Computer Science | 676 | 3 days ago | The interdisciplinary of Mathematics and Computer Science, Distinguished by its emphasis on mathematical technique and rigour |

## Backlinks from these awesome lists:

- sindresorhus/awesome
- fffaraz/awesome-cpp
- bayandin/awesome-awesomeness
- lnishan/awesome-competitive-programming
- jnv/lists
- endymecy/awesome-deeplearning-resources
- mostafatouny/awesome-theoretical-computer-science
- erichs/awesome-awesome
- flyhigher139/awesome-collection
- coopermaa/awesome-awesome
- 0ex/more-awesome