- A curated list of algorithms to learn and/or practice algorithms. Inspired by the curiosity for learning programming from scratch
If you want to contribute, please read the contribution guidelines.
- Binary search
- Asymptotic notation
- Selection sort
- Insertion sort
- Recursive algorithms
- Towers of Hanoi
- Merge sort
- Quick sort
- Graph representation
- Breadth-first search
- Depth-First Search
- Further learning
-
Pre-requisites:
- Learn Basic Language C, C++ or Python
- Practice on online coding platforms (hackerrank, spoj, codechef, codeforces)
-
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..
- 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.
- Udacity Intro to Algorithms - Python-based Algorithms course.
- Algorithms in Motion - Beginner's algorithms course with fun illustrations, based on the book Grokking Algorithms
├── Algorithm Name
│ ├── Notes
│ ├── notes.md
| ├──Simple Questions
| ├──basicquestion.md
| ├──Medium or Hard Questions
| ├──medium-hard-questions.md
└── README.md
Awesome list of blogs, mainly for competitive programming but you can refer to these when learning a new topic/algorithm
- 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 - Really informative blog for starting with the sport of programming.
- Algorithms and Data Structures - For getting deeper knowledge of algorithms and how to think in right direction.
Some tools that can help you in the learning of algorithms
- interactive-coding-challenges - Interactive, test-driven coding challenges (algorithms and data structures).
Made with ❤️ by DS Community SRM