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).

  • Awesome Algorithms
  • Websites
  • Online Courses
  • Books
  • Github Libraries
  • Online Judges
  • Tools

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)