If you have already taken a course in algorithms, why read Grokking Algorithms (manning.com/bhargava)?
If you were learning graph algorithms, which approach would you prefer:
-
Imagine you have to take public transit from your home to your office. How do you figure out the fastest route? Use graph algorithms! OR
-
We can choose between two standard ways to represent a graph G = (V, E): as a collection of adjacency lists or as an adjacency matrix. Either way applies to both directed and undirected graphs.
I prefer the first way: lead with lots of examples, and clear writing. The second way is an excerpt from "Introduction to Algorithms"...that's how they start their section on graph algorithms.
I have spent a lot of time coming up with clear examples for "sticking points". For example, you might still be wondering:
- What does recursion have to do with the stack?
- I understand recursion, but I don't know how to come up with a recursive solution to a problem.
- Why does quicksort run in O(n lg n) time in the average case?
- How are hash tables implemented?
- How does dynamic programming work again?
- What is the difference between breadth-first search and dijkstra's algorithm?
I think the current set of books on algorithms have a problem: they don't teach intermediate topics well. Those topics require a few leaps in thought. A lot of people don't make those leaps of thought and so they are not confident about their grasp of algorithms. I have spent a lot of time making sure there are no leaps of thought required in this book. If you had the same problem I did with other algorithms books, you might find mine easier to read!
Also: this book is not a reference manual. I don't teach you every single sorting algorithm there is, because you don't need that information. This book contains practical knowledge only.
I hope that answers your question! If you find any sticking points, let me know in the forum! I have already gotten a lot of good feedback from there.