Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
Recommended book about algorithms, data structures and complexity?

Please advise me a book on algorithms, that would be easier to read and understand than Cormen's book1. It may be not so big and deep in explanation. I even want it to not be that big, however it shouldn't contain misconceptions or errors or inaccuracies. It should be a some kind of pre-Cormen's book, that will help later to understand more sophisticated conceptions. A beginner book (but still worth to read).

1 Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein

share|improve this question
Could you link to Corman's book for new people that may not know what you are talking about? – Kevin Peno May 12 '11 at 21:18
1  
What kind of algorithms would you find interesting? Sorting algorithms are different from e.g. graphics rendering algorithms – user1249 May 20 '11 at 19:47
@ThorbjørnRavnAndersen datastructures algorithms like sorting and searching. – user1449 Jun 30 '11 at 9:02

marked as duplicate by Mark Trapp Dec 8 '11 at 4:41

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

9 Answers

up vote 13 down vote accepted

Algorithm Design Manual Steven Skiena. Well written much more readable, includes lots of real-world war stories and has a web site with examples, code, lectures etc

Plus it's considerably cheaper and lighter, AND a very friendly red cover!

share|improve this answer
1  
+1 for the pleasing red colour (that, and it's also an interesting looking book)! – FrustratedWithFormsDesigner May 12 '11 at 21:28
1  
Doesn't quite have the same ring to it as "Don't Panic!" – user1249 May 12 '11 at 22:43
2  
@Thorbjørn - and it wasn't even deliberate, but a British programmer of a certain age Hitch-Hiker quotes are embedded in the DNA. That's the trouble with programmers today, they don't understand hitch-hiker or monty python jokes in code – Martin Beckett May 12 '11 at 23:07
1  
@Martin, DNA is made all the more interesting as Douglas Adams middlename was Noel. – user1249 May 13 '11 at 6:03
1  
@Steve314, perhaps the look would have been less confused if you called them Vogons? – user1249 May 20 '11 at 19:48
show 4 more comments

I really like The Art of Computer Programming. It's pricey but well worth it. I go back to it very often and enjoy reading parts of it even when not working on specific problems. Also, the volume separation allows you to find and focus on algorithms on the areas that you need (seminumerical vs searching, etc) and it is far more comprehensive than other books i've seen.

share|improve this answer
12  
TAOCP as an easier intro than Corman? – Martin Beckett May 12 '11 at 21:21
10  
NO! That's not meant to be read! It's meant to sit on a shelf and make you look smart. :P – FrustratedWithFormsDesigner May 12 '11 at 21:26
2  
I don't think anyone, even Knuth, would claim TAOCP is is "easy to understand"! – Steve Haigh May 12 '11 at 21:41
5  
You gotta love TAOCP. How many times have you gotten all pumped up to dive into it and don't even get past the same page you've had dog-eared for 2 years? Lmao! – kirk.burleson May 12 '11 at 22:29
3  
I had an easier time with TAOCP than Corman. Corman bored me to death at school. Corman (and all alike) are too "textbooky". I guess we all learn differently. I've also used the Horowitz/Sahni book mentioned in another answer and that one is a bit better, much more introductory than Corman. – ale May 13 '11 at 0:47
show 4 more comments

I think that if you find "Introduction to Algorithms" from Cormen et al. challenging, that it's better to take a step back first and not try to find some "Algorithms for Dummies" substitution.

The best route here is to work towards that type of book by first getting a better view of the fundamentals behind algorithms (complexity/decidability, automata/turing machines, languages/grammars, etc.) and read Introduction to the Theory of Computation from Michael Sipser. This is by far the best book as a pure introduction.

Once you get a grip on the stuff there, the Cormen et al. book will make much more sense. You'll end up with a deeper insight into the how and why, than by trying to find a simple algorithms book.

share|improve this answer
+1 - I don't know if I 100% agree that doing this kind of deeper background learning is necessary for learning algorithms, but I definitely think it's important & overlooked. – Beekguk May 20 '11 at 18:59

I think Sedgewick's books are the next best thing to Cormen. His series is popular. There's a text for each language. They explain most of the algorithms covered in Cormen, but without the asymptotic analysis and proofs.

See Algorithms in Java

share|improve this answer
Does "Algorithms in Java" rather than "Algorithms in C++" make a lot of difference, other than in giving slightly more familiar-looking examples for fans of each language? – Steve314 May 13 '11 at 0:29
I think they're the same, but I've only ever used the Java version, so I'm not completely sure. – blackcompe May 13 '11 at 0:51
He writes well and easy to read. I'm not sure however that it falls in the OP's taste. Too academic. – user1249 May 20 '11 at 19:53

Check out Algorithm Design by Kleinberg. I used it as a companion book to the CLR and found it useful. http://www.amazon.com/Algorithm-Design-Jon-Kleinberg/dp/0321295358.

If you want to get a easier book I think the book by Horowitz/Sahni might fit the bill. http://www.amazon.com/Computer-Algorithms-Ellis-Horowitz/dp/0929306414

share|improve this answer

If you use Python (and even if you don't, since it's so close to pseudocode), I highly recommend Python Algorithms. Hetland has a very nice writing style, though it's certainly not as comprehensive as the books mentioned above.

I have no formal CS or Mathematical training and found it easy to follow and useful on a few of Facebook's engineering puzzles.

share|improve this answer

If you want a bunch of main algorithms in "recipe" form, with minimal (though not zero) performance analysis - though not really lacking explanation - I quite like Niklaus Wirths "Algorithms and Data Structures". I have the 1986 (Modula 2) edition in dead tree, but a more recent edition is available as a free PDF download...

http://www.inf.ethz.ch/personal/wirth/

Search for "Algorithms and Data Structures (1985) (Oberon version: August 2004)" on the page.

Niklaus Wirth designed many Pascal-family languages (including Pascal itself), and there's also a book on compiler design.

There are some weaknesses, even for practical rather than theory purposes. Some of the terminology isn't standard - for example "Balanced trees" rather than "AVL trees" (there's more than one way to balance a tree). Some algorithms aren't the obvious choice - e.g. "Binary B-Trees" are closely related to, but not quite the same, as "Red-Black trees". The "choice of hash function" chapter for hash tables (sorry, "Key Transformation") only suggests the modulo-a-prime-number method, which is pretty limited in practice. The reason is probably that growing/shrinking the hashtable isn't discussed that I remember - for a fixed-size table, modulo-prime is a fair option.

Even so, there's a lot of good stuff in a relatively small and convenient (288 pages for the Modula 2 edition) package. The number of times I've looked up even the lower-bound binary search is huge.

And if you top up with e.g. a view of the MIT OpenCourseware algorithms course notes, and look up some of the terms in Wikipedia, you shouldn't have any serious confusion issues.

share|improve this answer

I am currently reading The Algorithm Design manual by Steven Skiena. I am finding it pretty good - I particularly like the war stories about different algorithm implementations.

share|improve this answer
Duplicate answer. Please read the existing answers before posting. – Corbin March May 20 '11 at 20:23

I highly recommend Anany Levitin's Introduction to the Design and Analysis of Algorithms. The book categorizes algorithms not by their application areas, as is typically done in most texts, but by the underlying technique they employ. Also, the author clearly explains the thinking behind each algorithm he discusses. The writing style is engaging, and I found the puzzles used to discuss algorithm techniques very interesting.

share|improve this answer