Is Algorithm Design Manual a good book for a beginner in algorithms? [closed]

I've a good idea of what Big-O is, and I also know a few basic sorting algorithms, although, for some reason, I was never comfortable with them, and I keep forgetting them. I've been programming for 4 years in Java, Python, C and C++; I've been a decent programmer. Now, I want to move beyond learning programming languages and start learning algorithms.

I tried 'Introduction to Algorithms' by Cormen et al. but the Math is too dense for me (or, may be, I'm too dense for the Math in that book).

Now, I'm planning to take up Algorithm Design Manual by Steve Skiena. Would you recommend it for my situation? Do you have any other recommendations if you think this is not the one for me?


Solution 1:

I would certainly recommend the Skiena book. You've started to learn about algorithms, you should start to learn algorithms too.

To whoever edited this answer and replaced the last occurrence of the word algorithms with the word mathematics: I meant algorithms when I wrote this answer, I still mean algorithms, replacing the word with mathematics materially changes the answer. If you think that mathematics is what OP should learn, post your own answer to that effect. If you had troubled to read the commentary below you would understand why I chose the word algorithms and not mathematics.

Solution 2:

I would recommend against "Algorithm Design Manual" for your purposes and for skimming Cormen or Wikipedia instead.

After a short introduction to basic algorithmic topics, pages 171-437 don't really teach you neither about how algorithms work nor how to design them, but more about what algorithms exist and where to find their implementations (sometimes it refers you to implementations you will need to buy, like in the section on Linear Programming)

For example there are 3 pages on matrix multiplication, which give a few examples of what it is useful for, present the naive O(N3) algorithm, and mention there are better algorithms like Strassen's O(N2.81) (without describing the algorithm), and recommend that you to use the LAPACK library for it.

So if you want to learn how algorithms work, rather than what algorithms exist and where to find their implementations, I again, recommend against "Algorithm Design Manual".