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.