Introduction to Algorithms: A Creative Approach by Udi Manber [pdf]
doc.lagout.org
doc.lagout.org
Beginners should start with this. This book "actually" teaches you how algorithms are designed and how to break down problems into chunks and solve them using induction/recursion.
Your mind will just be blown.
I think this says a lot about the logic of the authors, though.
I have this reaction to some Coursera courses (Odersky's Scala course did this to me). I mean it's wonderful if you get the "ah hah" to figure out the exercise, and it's probably the most meaningful learning, but it shouldn't be the ONLY way.
It's like working on some super expensive niche car; if you have the magic tool that fixes your issue it's trivial, if you don't it's almost impossible.
A beginner can and should pick it up if they love math and programming.
I can second that. CLRS is a great reference work for people who already know algorithms, and I can absolutely understand why CS Professors use it to prepare courses and exercises.
But as an introductory text for newcomers? No. Absolutely not.
The book is Jay Wengrow's A Common Sense Guide to Data Structure and Algorithm [0].
It is published by Pragmatic Programmers.
I have found it to be the greatest algorithm book for self-learners.
It actually teaches you in what scenarios you might use which data structures and so on. Very highly recommend. What algorithms stand for and when you'd use one over another. Has nice code snippets, exercises that makes the learning whole.
Another great algo book is DPV. This is math-heavy, but this book has a soul.
Among the famous and ubiquitous ones, I like Steven Skiena.
[0]: https://pragprog.com/titles/jwdsal2/a-common-sense-guide-to-...
"But the left term is divisible by x - 1 by the induction hypothesis, and the right term is just x-1.".
I would spend many hours staring at that sentence wondering why I "just" did not understand, cycling through a whole range of feelings, years later to find out that there was likely a typographical error.
Additionally, many textbooks like this give a complicated expression and rather than reduce it mathematically, they expect the reader just to do this in their head and come to the conclusion that it is true.
Such things may seem like trivialities, and perhaps I am not the smartest math person around, but not paying attention to these subtle points can lead to deep frustration for the reader.
It just teaches algorithmic problem solving via math, but unlike mathy algorithmic books like CLRS, you only need algebra for this one.
I like how the book, IIRC, starts with invariants, providing the reader the foundational skill needed to notice underlying patterns and to decompose problems.
Should we really be linking to it?
I had a hard-copy that I regret selling.
That is a great book, too.