{"id":14112934,"url":"https://github.com/eric-erki/awesome-algorithms","last_synced_at":"2025-08-01T16:30:59.807Z","repository":{"id":99090866,"uuid":"237736085","full_name":"eric-erki/awesome-algorithms","owner":"eric-erki","description":"A curated list of awesome places to learn and/or practice algorithms.","archived":false,"fork":false,"pushed_at":"2020-02-02T07:39:33.000Z","size":80,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-20T23:05:10.507Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eric-erki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-02-02T07:39:06.000Z","updated_at":"2020-02-02T07:39:49.000Z","dependencies_parsed_at":"2023-07-06T12:45:58.063Z","dependency_job_id":null,"html_url":"https://github.com/eric-erki/awesome-algorithms","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eric-erki%2Fawesome-algorithms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eric-erki%2Fawesome-algorithms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eric-erki%2Fawesome-algorithms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eric-erki%2Fawesome-algorithms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eric-erki","download_url":"https://codeload.github.com/eric-erki/awesome-algorithms/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228393599,"owners_count":17912862,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-14T10:03:58.999Z","updated_at":"2024-12-06T00:31:04.328Z","avatar_url":"https://github.com/eric-erki.png","language":null,"funding_links":[],"categories":["Other Lists"],"sub_categories":["TeX Lists"],"readme":"# Awesome Algorithms\n\nA curated list of awesome places to learn and/or practice algorithms.\nInspired by [awesome-awesomeness](https://github.com/bayandin/awesome-awesomeness) and all the other awesome Awesome libraries.\n\nIf you want to contribute, please read the [contribution guidelines](https://github.com/tayllan/awesome-algorithms/blob/master/CONTRIBUTING.md).\n\n- [Awesome Algorithms](#awesome-algorithms)\n    - [Websites](#websites)\n    - [Online Courses](#online-courses)\n    - [Books](#books)\n    - [Cheat Sheets](#cheat-sheets)\n    - [Github Libraries](#github-libraries)\n    - [Online Judges](#online-judges)\n    - [Tools](#tools)\n\n## Websites\n\n*Websites you should use to learn classic algorithms*\n\n* [A Visual Guide to Graph Traversal Algorithms](https://workshape.github.io/visual-graph-algorithms/) - Interactive visualisations for learning how graph traversal algorithms work\n* [Algomation](http://www.algomation.com/) - A didactic, animated, exposition of algorithms.\n* [Algorithm Visualizer](http://algo-visualizer.jasonpark.me/) - Dozens of animated algorithms (with code), and you can also create your own.\n* [Algorithms Visualization](http://bost.ocks.org/mike/algorithms/) - A dense article on Algorithms Visualization.\n* [Big-O Cheat Sheet](http://bigocheatsheet.com/) - Big-O complexities of common algorithms used in Computer Science.\n* [Code-Drills](https://code-drills.com/tools/comparator) - Practice problems recommender (includes Codeforces, Codechef and Spoj).\n* [Data Structure Visualizations](http://www.cs.usfca.edu/~galles/visualization/Algorithms.html) - Visualize the behavior of Data Structures and play with its operations.\n* [Geeks for Geeks](http://www.geeksforgeeks.org/fundamentals-of-algorithms/) - Lots and lots of well explained and implemented algorithms.\n* [Path Finding](https://qiao.github.io/PathFinding.js/visual/) - A visual representation on how algorithms such as A\\*, IDA\\*, Breadth-First-Search, Best-First-Search and others describe a path between two points A and B.\n* [Rosetta Code](http://rosettacode.org/wiki/Rosetta_Code) - A programming chrestomathy site which aims to present implementations of many algorithms and data structures in different programming languages.\n* [Sorting Algorithms](http://www.sorting-algorithms.com/) - Nice and simple animations of sorting algorithms. With short codes and discussions.\n* [Stoimen's web log](http://www.stoimen.com/) - Some algorithms nicely explained.\n* [The Sound of Sorting](http://panthema.net/2013/sound-of-sorting/) - The Sound of Sorting - \"Audibilization\" and Visualization of Sorting Algorithms\n* [VisuAlgo](http://visualgo.net) - Visualising data structures and algorithms through animation.\n* [Wikipedia - Algorithms](https://en.wikipedia.org/wiki/List_of_algorithms) - Of course!!\n* [Wikipedia - Data Structures](https://en.wikipedia.org/wiki/List_of_data_structures) - and why not ?!!\n\n## Online Courses\n\n*Free and High Quality Courses Online*\n\n* [Algorithms: Divide and Conquer, Sorting and Searching, and Randomized Algorithms](https://www.coursera.org/learn/algorithms-divide-conquer) - The primary topics are: asymptotic (\"Big-oh\") notation, sorting and searching, divide and conquer, and randomized algorithms.\n* [Algorithms: Graph Search, Shortest Paths, and Data Structures](https://www.coursera.org/learn/algorithms-graphs-data-structures) - The primary topics are: data structures, graph primitives, and their applications.\n* [Algorithms: Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming](https://www.coursera.org/learn/algorithms-greedy) - The primary topics are: greedy algorithms and dynamic programming.\n* [Algorithms: Shortest Paths Revisited, NP-Complete Problems and What To Do About Them](https://www.coursera.org/learn/algorithms-npcomplete) - The primary topics are: shortest paths, NP-completeness and what it means for the algorithm designer, and strategies for coping with computationally intractable problems.\n* [Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1/home/welcome) - 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. \n* [Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2) - Part II focuses on graph- and string-processing algorithms.\n* [Khan Academy Algorithms](https://www.khanacademy.org/computing/computer-science/algorithms) - Algorithm course ministred by Tomas Cormen and Devin Balkcom.\n* [MIT - 6-006](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/) - Well explained algorithms.\n* [MIT - 6-046j](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/) - Similar to the previous one, but with different algorithms.\n* [MIT - 6-00sc](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/index.htm) - An easy and well explained introduction to algorithms.\n* [Udacity Intro to Algorithms](https://www.udacity.com/course/intro-to-algorithms--cs215) - Python-based Algorithms course.\n* [Algorithms in Motion](https://www.manning.com/livevideo/algorithms-in-motion) - Beginner's algorithms course with fun illustrations, based on the book Grokking Algorithms\n* ~~[YogiBearian YouTube Channel](https://www.youtube.com/channel/UCv3Kd0guxD5KWQtP---9D6g) - Lots of well explained vidoes on various computer science subjects.~~ _Account terminated due to violations of Youtube Policies._\n\n## Books\n\n*The most highly regarded books to learn algorithms*\n\n* [Algorithm Design](https://www.pearsonhighered.com/program/Kleinberg-Algorithm-Design/PGM319216.html) - Pretty straight-forward.\n* [Algorithms](http://algs4.cs.princeton.edu/home/) - Problems explained with Java, OO good practices, visualizations, and free online resources.\n* [Algorithms and Data Structures in JavaScript](https://gum.co/dsajs) - Classical algorithms and data structures implemented and explained using JavaScript.\n* [Classic Computer Science Problems in Python](https://www.manning.com/books/classic-computer-science-problems-in-python) -This great book presents dozens of coding challenges, ranging from simple tasks to clustering data using k-means.\n* [Data Structures and Algorithms Made Easy](https://www.amazon.in/Data-Structures-Algorithms-Made-Easy/dp/819324527X) - A great way to implement algorithms with their specific programmable tasks.\n* [Data Structures Using C](http://www.amazon.com/Data-Structures-Using-Aaron-Tenenbaum/dp/0131997467) - The basic concepts and usages of data structures.\n* [Elementary Algorithms](https://github.com/liuxinyu95/AlgoXY) - An awesome book about algorithms and data structures.\n* [Grokking Algorithms](http://www.manning.com/bhargava) - An illustrated book on algorithms with practical examples.\n* [Introduction to Algorithms](http://mitpress.mit.edu/books/introduction-algorithms) - Essential!\n* [Swift Algorithms \u0026 Data Structures](http://shop.waynewbishop.com/) - A practical guide to concepts, theory and code.\n* [The Algorithm Design Manual](http://www.algorist.com/) - Easy to read and full of real world examples.\n* [The Art of Computer Programming](http://www-cs-faculty.stanford.edu/~uno/taocp.html) - The Book.\n* [Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/books/structure-and-interpretation-computer-programs-second-edition)\n* [Algorithms and Data Structures in Action](https://www.manning.com/books/algorithms-and-data-structures-in-action) - A different and a great way to introduce algorithms and data structures that can be used at work.\n\n## Cheat Sheets\n* [The Technical Interview Cheat Sheet](https://gist.github.com/TSiege/cbb0507082bb18ff7e4b)\n* [Princeton DS Cheat Sheet](https://algs4.cs.princeton.edu/cheatsheet/)\n* [CLRS in short](https://sinon.org/algorithms//#data-structures)\n* [Rice university DS couse in short](https://www.clear.rice.edu/comp160/data1.html)\n* [Useful Reddit thread](https://www.reddit.com/r/learnprogramming/comments/3gpvyx/algorithms_and_data_structures_cheat_sheets/)\n\n## Github Libraries\n\n*Implementations of the most classic algorithms in a wide variety of programming languages*\n\n* [C](https://github.com/fragglet/c-algorithms)\n* [CoffeeScript](https://github.com/BrunoRB/algorithms.coffee)\n* C#\n    * [by @shkolovy](https://github.com/shkolovy/classic-algorithms)\n    * [by @aalhour](https://github.com/aalhour/C-Sharp-Algorithms)\n    * [by @justcoding121](https://github.com/justcoding121/Advanced-Algorithms)\n* C++\n    * [by @xtaci](https://github.com/xtaci/algorithms)\n    * [by @PetarV-](https://github.com/PetarV-/Algorithms)\n    * [by @faheel](https://github.com/faheel/Algos)\n    * [by @sslotin](http://github.com/sslotin/algo)\n* [Erlang](https://github.com/aggelgian/erlang-algorithms)\n* [Go](https://github.com/arnauddri/algorithms)\n* Java\n    * [by @jpa99](https://github.com/jpa99/Algorithms)\n    * [by @phishman3579](https://github.com/phishman3579/java-algorithms-implementation)\n    * [by @asmolich](https://github.com/asmolich/algorithms)\n    * [by @psjava](https://github.com/psjava/psjava)\n    * [by @jeandersonbc](https://github.com/jeandersonbc/algorithms-and-ds)\n    * [by @pedrovgs](https://github.com/pedrovgs/Algorithms)\n    * [by @Erdos-Graph-Framework](https://github.com/Erdos-Graph-Framework/Erdos)\n    * [by @deepak-malik](https://github.com/deepak-malik/Data-Structures-In-Java)\n    * [by @yusufcakal](https://github.com/yusufcakal/algorithms)\n* JavaScript\n    * [by @jiayihu](https://github.com/jiayihu/pretty-algorithms)\n    * [by @felipernb](https://github.com/felipernb/algorithms.js)\n    * [by @nzakas](https://github.com/nzakas/computer-science-in-javascript)\n    * [by @duereg](https://github.com/duereg/js-algorithms)\n    * [by @mgechev](https://github.com/mgechev/javascript-algorithms)\n    * [by @trekhleb](https://github.com/trekhleb/javascript-algorithms)\n    * [by @ManrajGrover](https://github.com/ManrajGrover/algorithms-js)\n    * [by @amejiarosario](https://github.com/amejiarosario/dsa.js)\n    * [by @zonayedpca](https://github.com/zonayedpca/AlgoDS.js)\n* Objective-C\n    * [by @ EvgenyKarkan](https://github.com/EvgenyKarkan/EKAlgorithms)\n* Python\n    * [by @nryoung](https://github.com/nryoung/algorithms)\n    * [by @prakhar1989](https://github.com/prakhar1989/Algorithms)\n    * [by @laurentluce](https://github.com/laurentluce/python-algorithms)\n    * [by @nbro](https://github.com/nbro/ands)\n    * [by @keon](https://github.com/keon/algorithms)\n* Ruby\n    * [by @kanwei](https://github.com/kanwei/algorithms)\n    * [by @sagivo](https://github.com/sagivo/algorithms)\n    * [by @kumar91gopi](https://github.com/kumar91gopi/Algorithms-and-Data-Structures-in-Ruby)\n* [Scala](https://github.com/vkostyukov/scalacaster)\n* Swift\n    * [by @kingreza](https://github.com/kingreza/Swift-Algorithms-Strings-)\n    * [by @waynewbishop](https://github.com/waynewbishop/SwiftStructures)\n    * [by @hollance](https://github.com/hollance/swift-algorithm-club)\n* Language agnostic\n    * [by @kennyledet](https://github.com/kennyledet/Algorithm-Implementations)\n    * [by @indy256](https://github.com/indy256/codelibrary)\n    * [by @sagivo](https://github.com/sagivo/algorithms)\n    * [by @patmorin](https://github.com/patmorin/ods)\n\n## Online Judges\n\n*Online Judges to practice what you learned above*\n\n* [A2 Online Judge](https://a2oj.com/) - Online Judge and problem archive.\n* [ACM-ICPC Live Archive](https://icpcarchive.ecs.baylor.edu/) - Hundreds of problems from previous ACM-ICPC Regionals and World Finals.\n* [AIZU ONLINE JUDGE](http://judge.u-aizu.ac.jp/onlinejudge/) - Japanese Online Judge.\n* [Algo Muse](http://www.algomuse.appspot.com) - Research based algorithmic problems. \n* [AtCoder](https://atcoder.jp/) - Japanese programming contest website.\n* [Baekjoon Online Judge](https://www.acmicpc.net/) - Korean Online Judge. 10000+ problems. Supports 60+ languages.\n* [CS Academy](https://csacademy.com/) - Holds online contests and IOI practice contests\n* [CodeChef](https://www.codechef.com/) - More problems and monthly online contests.\n* [Codeforces ](http://codeforces.com/) - The only programming contests Web 2.0 platform\n* [Codefights](https://codefights.com/) - Practive programming and tackle out your next tech interview\n* [CodeMarshal](https://algo.codemarshal.org/) - Real world contests online!\n* [CodeWars](http://www.codewars.com/) - A website that houses support to solve algorithms in many languages in varying difficulty.\n* [CoderByte](http://www.coderbyte.com/) - A decent website with algorithm challenges from beginner to advanced levels. Supports most of the popular languages like C++, python, javascript, ruby.\n* [Firecode](https://www.firecode.io/) - Firecode.io uses machine learning algorithms along with curated real-world interview questions, solutions \u0026 a vibrant social community of learners to get you ready for your next coding interview.\n* [Coding Blocks](https://hack.codingblocks.com/app/) - Website that have problems based on Maths, Data Structures, Various Algorithm and also conducts Coding Competition.\n* [HackerEarth ](https://www.hackerearth.com/) - Practice alogrithmic problems \u0026 challenges and participate in hiring challenges.\n* [HackerRank](https://www.hackerrank.com/) - Featured algorithm and functional programming online judges\n* [HiHoCoder](http://hihocoder.com/) - Chinese and English problem solving practice and recruitment challenge site.\n* [Infoarena](http://www.infoarena.ro/) - Romanian Online Judge. 1500+ algorithmic problems\n* [Interviewbit](https://www.interviewbit.com/) - Learn, practice and prepare for interviews.\n* [Kattis](https://open.kattis.com/)- Online judge and problem archive\n* [LavidaOnlineJudge](http://judge.lavida.us) - Korean Online Judge(Half English). 1300+ problems.\n* [Learneroo Algorithms Tutorials](https://www.learneroo.com/subjects/8) - Learn and practice algorithms by solving challenges online.\n* [LeetCode](https://leetcode.com/) - Learn algorithms and prepare for interviews.\n* [PKU JudgeOnline](http://poj.org/) - Chinese Online Judge.\n* [ProjectEuler](https://projecteuler.net/) - Mathematical problems that can be solved using algorithms (or just a pencil, depends on how much you already know).\n* [Rosalind](http://rosalind.info/problems/locations/) - A platform for learning bioinformatics and programming through problem solving.\n* [ShareCode.io ](https://sharecode.io/) - Online Judge and contest host with a lot of algorithmic problems in the archive to practice.\n* [Snakify](https://snakify.org/) - An introductory Python course with 100+ algorithmic problems and a step-by-step debugger (from Russia).\n* [SPOJ](http://www.spoj.com/) - More problems.\n* [TopCoder](https://www.topcoder.com/) - Lots of problems and real world/money worthy problems in Graphic Design, Data Science and Development.\n* [URI](https://www.urionlinejudge.com.br/judge/login) - Brazilian Online Judge. Not so much problems, but it's growing and it has online contests.\n* [UVA](https://uva.onlinejudge.org/) - Hundreds of problems (from previous ACM-ICPC Regionals, World Finals and others).\n\n## Blogs\n\n*Awesome list of blogs, mainly for competitive programming but you can refer to these when learning a new topic/algorithm*\n\n* [An awesome list for competitive programming!](https://codeforces.com/blog/entry/23054) - Awesome blog for all the resources and list of books and algorithms.\n* [Algorithms Weekly](https://petr-mitrichev.blogspot.com/) - A good blog by Petr Mitrichev, mainly in Java.\n* [Sport of Programming](https://www.hackerearth.com/practice/notes/getting-started-with-the-sport-of-programming/) - Really informative blog for starting with the sport of programming.\n* [Algorithms and Data Structures](http://www.allisons.org/ll/AlgDS/) - For getting deeper knowledge of algorithms and how to think in right direction.\n## Tools\n\n*Some tools that can help you in the learning of algorithms*\n\n* [interactive-coding-challenges](https://github.com/donnemartin/interactive-coding-challenges) - Interactive, test-driven coding challenges (algorithms and data structures).\n\n## License\n\nAnd for the sake of copyleft, here's our license:\n\n[![Creative Commons License](http://i.creativecommons.org/l/by/4.0/88x31.png)](http://creativecommons.org/licenses/by/4.0/)\n\nThis work is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feric-erki%2Fawesome-algorithms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feric-erki%2Fawesome-algorithms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feric-erki%2Fawesome-algorithms/lists"}