What’s the best way to learn algorithms for programmers?
Once I was asked this question on Quora. My answer got 17.7k Views and many upvotes. The person who asked the question needed some specific learning path & resources. When I was used to do competitive programming and learn algorithms, I followed some steps to learn algorithms. Those steps were best fit for me. May be those steps can be helpful for you also. So, here I am sharing my learning steps -
Reading a book is very essential because every topic is described in detail into a book, but in videos/tutorials everything is described in short.
For books I will recommend —
1: Introduction to Algorithms: Charles E. Leiserson, Clifford Stein, Ronald Rivest, and Thomas H. Cormen
2: Algorithms (4th Edition): Robert Sedgewick, Kevin Wayne
3: The Algorithm Design Manual: Steven Skiena
Now come to the steps:
I follow “Learning by doing” philosophy.
Step 1: At first you should learn the theory of any particular algorithm from your books/resources.
Step 2: Try to implement the algorithm(theory) you’ve learnt into code without looking at others implementation. After much trying if you can’t implement then take help of others.
Step 3: Now pick up a link from Resources to practice and solve some problems related to the algorithm you’ve learned recently.
To me this my best way to learn algorithms.
Best of luck. :)
This article was also posted in my personal blog.