Apps Automotive Beauty TheOtherWoman Women's statement sneakers nav_sap_plcc_ascpsc Unlimited Music. Always ad-free. Learn more. New LG V35 ThinQ | $699.99. Save with Prime Exclusive Phones. Introducing Fire TV Cube Grocery Handmade Personalized Jewelry modern furniture and decor Book a house cleaner for 2 or more hours on Amazon TheGrandTour TheGrandTour TheGrandTour  Echo Fire tablets: Designed for entertainment Kindle Paperwhite GNO Shop now SWMTVT18_gno



on August 19, 2016
An impressive volume that covers many many algorithmic strategies and is surely a major achievement in completeness and accuracy, and should also be pretty unique in its range from mathematical representations to concrete pseudo-code for algorithm implementation. Certainly a book to admire, featuring some excellent buildups and explanation paths. I imagine it to be highly esteemed as reference for undergraduate year-long series of lectures on algorithms in a university setting.

As such it probably earns more than the 3 stars I will give it from my own perspective. My reasons for this are inherent in my own relationship to the topic - as a "user" if you will.

I bought this book in order to dig deeper into my own conceptual understanding of algorithms, working by my myself.
For this purpose I found the book to be quite tedious. Disadvantageous are especially the fetishization of compact representations, a tendency mathematicians are known to have.
It really doesn't pull a lot of punches when it comes to dishing out mathematical expressions for the reader to patiently unfold for themselves in order to really grasp the meaning of the surrounding text - Ingestion of the material can become a true test of perseverance this way.

It also needs to be said that this is one of these books that bears "Introduction" in the title when it works in fact more like an encyclopedic heavyweight 1200 page quasi-complete survey of the field.
I'm writing this so you know what you are getting into. Be sure this is what you're looking for and what you need.
43 people found this helpful
11 comment Report abuse
on March 20, 2016
For background, I am a not-so-sharp CS undergrad that used this book for an intro. to algorithms class. I've done linear algebra, struggled my way through a "calculus" probability course, and enjoyed implementing many typical data structures. My learning style relies on simple examples (especially visual) accompanied by a concise explanation. Here are my thoughts:

This book is impressive! It covers a lot of subject matter and is clearly worded. However, you're going to get lost because this often reads more like a reference manual than a conversation that appeals to intuition. You'll be pushed into analyzing algorithms for theoretical data structures that you fuzzily remember (if at all). But, nonetheless, throw enough man hours into this book and you will learn concrete approaches to determining just how hard you're making the computer work.

My biggest criticism is that, as an *introduction*, this book doesn't do the best job at warming up readers to new tools and methodologies. This is an 'eh, just push them into the deep end' kind of approach to learning.
44 people found this helpful
22 comments Report abuse
on October 6, 2016
I think this is a pretty good book that is easy to read if you have a strong background in proof-based math.

Highlights:
- The introduction (Chapters 1-4) is really good and does a good job setting up all the fundamental concepts of algorithms. I think a lot of people tend to skip over introductions because they think they know all of it already, but this is an introduction that I recommend reading the whole way through.
- The book is a pretty light read (none of the math is too difficult) and each chapter is a good length.
- I think the material on dynamic programming and greedy algorithms was particularly enlightening, and if you read it the whole way through you actually learn how to prove that greedy algorithms work, instead of just being like "let's use a greedy algorithm because it seems right"
- I was able to copy a lot of CLRS code almost verbatim in my programming interviews and pass them.
- The figures are really well done and informative.

Drawbacks:
- The pseudocode has a lot of one-letter variable names, and while this follows the tradition of pure math, it also makes understanding the algorithms more difficult than it should be.
- Sometimes the pseudocode is not the "easiest" possible pseudocode (for example, merge sort), and I think it would be better if the authors presented a simpler version of the pseudocode first and then extended it to the optimal version. But then I guess CLRS would be even longer than it already is.
- The arrays are 1-indexed, which makes it trickier to convert to code. Also there are some sections of the textbook (the counting sort section) where some of the arrays are 0-indexed and other arrays are 1-indexed, which is just weird.
- I think the material on graphs, particularly the derivations, could be done in a more engaging and intuitive way. The derivations in Chapters 22-24 were a long series of small uninteresting lemmas, instead of a small number of harder, more insightful theorems. I found derivations elsewhere on the internet that were a lot more interesting and built more intuition about why the procedures worked. I feel like the rest of the book is pretty good though, so maybe all the graph stuff was written by a separate person who is not very good at explaining things.
12 people found this helpful
0Comment Report abuse
on June 3, 2016
This is probably the most well known and most used textbook on the subject, and with good reason. An excellent resource, covering just about everything you need to know for a good understanding of Algorithms. (side tip, my friends in the industry call this the "How To Pass a Google Interview" book).

My only complaint is that the binding has completely stated disintegrating after only 9 weeks of use. All of chapters 15 and 16 are completely falling out of my copy (and this is getting worse). Very disappointing as I plan on using it for a long time.
review image
8 people found this helpful
11 comment Report abuse
on October 31, 2015
I'm reviewing this for what it is: An academic text that also serves as a collective document of algorithms for the community (computer science, etc.). This is not a beginner text. It's a first-class algorithms book that is very academically rigorous. That's not a put-down.

Great reference and great read when you need to get out of the box and think creatively.

For a more approachable intro to algorithms, check out Sedgewick's book. That book also has a companion website and Coursera course. it's hard to go wrong with that combo.
6 people found this helpful
22 comments Report abuse
on October 1, 2015
The printing is not clear.
review image
13 people found this helpful
11 comment Report abuse
on January 22, 2016
My primary intent of buying the book was to implement efficient data processing algorithms for Data warehouse application in my project and in personal big data project i am working on. I see each algorithm has detailed mathematical proof, which i think you can skip and focus on just implementing the algorithm. I am sure this book is valuable for understanding the algorithm and you would do good job in tech interview. I see that most of IT companies such as Google, Apple etc.. focus more on how well the candidate understands and implements algorithm. So its more of back to basics :).
6 people found this helpful
0Comment Report abuse
on April 22, 2014
I am a math major who has taken a few cs courses from the cs department at my university. Up until reading this book cs has always been a bit of a mystery to me. I have heard a million and one time how cs is based on mathematics but aside from understanding the idea of traversing through arrays as you would the indexes of a sequence, I have never really seen the connection between the two subjects. This book does an amazing job of demonstrating the mathematical basis of cs. From the very beginning when the authors deconstruct the for-loop used in a insert-sort into a variation on mathematical induction the lines between the two subjects are made crystal clear.

I would agree that a pretty solid understanding of mathematics is required for this book, and I can see why someone coming from a typical undergraduate education in cs would find it difficult and intimidating to tackle this book. It definitely does not teach you how to program or the basics of object oriented design as it proceeds to teach you about structure and design of algorithms. I can also understand why someone hoping to simply get a job as a "programmer" or "software engineer" would not necessarily be well served by this book. The authors are very upfront on this note though, and specifically warn prospective students that they are not going to teach them how to "code" solutions to common cs problems. What they are going to teach them is the fundamentals of algorithm analysis and design. How valuable prospective students find this approach is going to depend entirely on what exactly they hope to do with their understanding of computer science. If you want to learn how to code and be paid to be a developer (not a bad line of work by any stretch of the imagination) you might want to look else where.

For someone coming from a mathematics background though (whether it's an applied field such as statistics or numerical analysis or a pure field like abstract algebra or analysis) this is an excellent introduction to the field of computer science. If you are coming from a math background the analysis and structure of algorithms as presented in this book will instantly click. For me personally I loved the fact that the underlining mathematical basis of cs did not get lost in details of coding or working within certain developmental environments like Eclipse. Again, probably not an ideal choice for someone looking to learn this particular subjects, but definitely a good choice for math majors (or prospective cs grad students).
2 people found this helpful
0Comment Report abuse
on March 22, 2015
This is the quintessential text for algorithms and many universities use this book in their "Computer Science 101" course. It was required in my first year at the University of Toronto (late 90's). It presents a treatment of the most common algorithms and the techniques needed to analyze them.

I recall struggling with the subject matter, despite having worked with computers since childhood and completing the requisite high-school mathematics courses. The approach taken by the authors is fairly direct; there is little hand-holding, although there are 100 pages of appendices covering pre-requisites.

I had my moments of wanting to hurl it across the room, but it remained amongst the few texts I held onto, thinking it might be useful or enlightening in the future, relative to the burden of lugging it around. I've since upgraded from the 2nd edition to the 3rd, and occasionally pick it up, read a few sections or a chapter and complete some exercises.

Each topic in the book is covered in the same way:
- Explanation of problem or concept.
- Example(s) and/or diagram(s)
- Mathematical proofs, where applicable.
- Problem set

Tip: Concrete Mathematics by Knuth is good primer, establishing the specific discrete and continuous mathematical techniques underpinning the algorithms, and filling several knowledge gaps. Also, Cormen has published a more approachable version of this text ("Algorithms Unlocked") which which be more appropriate to some.

None of the solutions to the exercises are provided in the book, but a few are available at the books website: mitpress.mit.edu/books/introduction-algorithms.
19 people found this helpful
11 comment Report abuse
on May 10, 2014
I just finished an undergrad-level college course that used this book (3rd edition). Extremely in-depth on the topics that it covers, using formal mathematical notation throughout to present the algorithms. As many others have said, it's very math-heavy and I'd recommend that anyone thinking about learning from this book should already have a strong background in especially discrete math, but should also have some familiarity with single-variable calculus and probability. The appendices do a brief math review (on discrete math & probability) but are not a substitute for learning the math for the first time.

The book is essentially best described as a detailed, mathematically-oriented analysis of algorithmic theory and covers a wide variety of topics. Proofs of various concepts are built up with lemmas throughout as well, and many of the exercises in the book often ask for a proof to show that something is correct. The authors do provide a Solutions file online, but for only some exercises up through chapter 26 when it has 35 chapters.

The book more than "combines rigor and comprehensiveness" as it says on the back, and it will almost certainly be an indispensable reference in the future for anyone planning to work (or is already working) in a computer science-related field, but it also has some notable drawbacks as well, not the least of which is the title. A genuine "Introduction" to algorithms would've been either more accessible (with less math) or substantially shorter (at approximately half the page count or less), or both. As it is, the book's title could have more accurately reflected its density with something more like "Algorithm Theory In Depth" or "Algorithm Analysis". Fortunately the book includes an extensive index that lists out nearly every sub-topic that it covers for quick reference.

Some of the notable drawbacks include:
- It often shows that it was written by 4 different authors, as some topics are explained better than others (the graph algorithms overall were explained well) while others lacked sufficient clarity (recurrence relations, sorting in general, greedy algorithms, amortized analysis, NP completeness).
- Like many other academia-oriented textbooks, it suffers from overuse of the infamous pretentious phrase "it is easy to see," paticularly when it's not easy to see what the author is talking about.
- Chapter 4 suffers from a lack of explanation on solving recurrences by the recursion-tree and substitution methods, with insufficient examples.
- No exercises or content to help with actually implementing an algorithm in a programming language, because putting an algorithm into practice should be just as important as the theory.
- The authors write in the preface that the book is aimed at teachers, students, professionals, & their colleagues (!). A book that attempts to cater to both students and the authors' colleagues at the same time would appear to be paradoxical, right?
- Dry, dispassionate wording that fails to inspire the reader to continue reading the text, and continue learning past this book as well.

Despite the drawbacks it's a good, very dense & in-depth reference on the subject, but for those learning algorithms for the first time, I'd recommend one of these other books first that explain the concepts more clearly in plain English and then coming back to CLRS afterwards. Just pick the one based on the language you're most familiar with. I own copies of all of these books btw (a few in digital formats, not all of them in print) and can personally speak to their quality in offering clearer, easier-to-understand explanations of algorithms.
Data Structures In C, by Noel Kalicharan
Data Structures and Algorithms in C++ (3rd Edition), by Adam Drozdek (can't speak to the newer 4th Edition)
Data Structures and Algorithms in Java (2nd Edition), by Robert Lafore
Algorithms (4th Edition), by Robert Sedgewick & Kevin Wayne (uses Java)
Problem Solving with Algorithms and Data Structures Using Python SECOND EDITION, by Bradley Miller & David Ranum

If you're a college student that has to buy this book for your algorithms class like I had to, there are a variety of free resources online that should make the subject easier to learn along the way, like the MIT Open CourseWare resources on algorithms (course numbers 6.006 and 6.046), StackOverflow, GeeksforGeeks, and the sheer quantity of lecture slides available online at other colleges & universities. Coursera regularly has a free class on the subject as well.
23 people found this helpful
0Comment Report abuse

Sponsored Links

  (What's this?)