views:

1034

answers:

9

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 Carmen 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?

Thanks for your time!

A: 

(!) Aho & Ulman Algorithms And Data Structure (!!) Vhirt (!!!)Donald.E.Knuth The Art of Computer Programming

Dewfy
+6  A: 

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

Mark

High Performance Mark
"You've started to learn about algorithms, you should start to learn algorithms too." - Is it me or this doesn't make a lot of sense?!
Alix Axel
It made sense to me. It's another way of saying, "Instead of talking about algorithms, start learning it."
artknish
Learning about algorithms means learning stuff such as complexity, iteration, recursion, divide-and-conquer, branch-and-bound, etc.Learning algorithms means knowing what quicksort, bubblesort, Dijsktra's algorithm, Kruskal's algorithm, etc are.
High Performance Mark
A: 

"Introduction to Algorithms" by Cormen, Leiserson & Rivest. See http://www.amazon.com/Introduction-Algorithms-Second-Thomas-Cormen/dp/0262032937

Manu
A: 

I highly recommend Data Structures and Algorithm Analysis in C++ by Mark Allen Weiss.

Randell
A: 

If you want a down to earth approach with a little maths thrown in try Algorithms in a Nutshell - I for one actually enjoyed reading it which is more than I can say for the knuth masterwork. (Ok there are a few pages in knuth that were enlightening enough to be called fun.)

mikej
A: 
brianegge
+5  A: 

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".

yairchu
+2  A: 

I bought Algorithm Design Manual recently and have only gone though first few chapters. It is a great book but in my opinion (from what I have read so far):

(1) it is no less dense than Cormen's.

(2) it is more about practical implementations of algorithms than learning algorithms.

Jahanzeb Farooq
+1  A: 

No, I don't think so. Try Data Structures and Algorithms in 24 Hours by Robert Lafore.

Zerka Jahanzeb