Creating software systems involves more than simply writing a program. It requires creativity and technical excellence. Technical excellence includes the ability to make programs robust and efficient. Efficient algorithms are at the heart of all but the most trivial programs. Programmers, however, seldom think about the algorithms in their programs until they encounter problems. Many programmers do not have a background in algorithm analysis and design and if they do, they don't take the time to find the right algorithm for their needs. Algorithms in a Nutshell helps programmers select, analyze, and implement the right algorithms for their particular needs. It provides just enough mathematics to let the reader understand and analyze algorithm performance. The algorithms in the book are based upon the type of problems they address. Each algorithm is presented in the style of a design pattern - an approach, or plan for how to solve the problem accompanied by the information needed to understand why the algorithm is appropriate, how one might determine why the algorithm is the right one, and implementation tips. This is a major benefit to the reader. Just as design patterns for object-oriented design enable developers to use a common language to describe their designs, we believe that providing a pattern language for algorithms can enable similar communication benefits.
George T. Heineman is an Associate Professor of Computer Science at WPI. His research interests are in Software Engineering. He co-edited the 2001 book "Component-Based Software Engineering: Putting the Pieces Together". He is nearly half-way towards his childhood goal of writing one million lines of code.
Aside from his professional pursuits, George is an avid puzzler. He invented Sujiken(R), a Sudoku variation played on a right-triangle arrangement of cells in which numbers cannot repeat in a horizontal row, vertical column or diagonal in any direction. "
This book is fantastic, assuming you are already familiar with the subject, it can really be a great refresher, it is short, you can get through it on a weekend or so, and the 1-pager per algorithm is great, reminds me of old school study notes.
If you want to read an easy book about algorithms, then the "Algorithms in a Nutshell" is not primarily for you. Abstruse explanations of the basic algorithms make this book readable only for experts in Computer Science field. Perhaps, authors for the sake of pages, decided to explain topics in a short and complex manner.
A practical guide gives you multiple algorithms in three programming languages such as C++, Python and Java, moreover, authors provide with pseudocode to each algorithm that they use. It also covers basic algorithms used in Sorting, Searching, and, most interestingly, algorithms used in Artificial Intelligence, Computational Geometry. As an epilogue they sum up all content of the book and advise how to demise a comprehensive algorithm.
Experimental Algorithmics is an emerging area of active interest and this is one of the few books presenting the subject matter from the point of programmers and discussing the relative efficiency of algorithms from practitioner's perspective.
This book is meant to be a handy desk reference to the most commonly used algorithms, and for that purpose, it's perfect. If you're expecting a tutorial style book or a comprehensive reference, you'll be disappointed.
I think this is a good book to read before delving fully into the Algorithm Design manual or heavier algorithms books. Good refresher and quick guide to highly used sorts and such.
Not more algorythms, only basic (but A* Star have been contaned in). Nice infographics with main info for each algoryhtm. Good that author used C and Java for examples, not only pseudocode.
Quickly locate algorithms that relate to the problems that you want to solve
I have a pretty good collection of books on algorithms. Many O'Reilly books are in the collection. Yet I am most impressed with” Algorithms in a Nutshell “a desktop quick reference. I won't go into a lot of detail as anybody who purchases this book already knew what they're looking for. I am impressed however that for such a small book this goes into a lot of deep concepts and gives you practical solutions.
The best way to see if this book is useful compared to others is to look at sorting algorithms that you know by heart such as median sort and quicksort. If this book tells you what you already know or even does a better job of explaining what you know this is the book for you. This is the book for me.
Even with these examples, which take very little adjustment to put into the real world, you may want to supplement this book with “Sorting and Searching (The Art of Computer Programming, Volume 3)” by Donald E Knuth, Richard S Varga, and Michael A. Harrison.
Even if you are not a programmer this book can help you to understand what programmers and or coders are accomplishing with their programs. For people taking any math discipline school, this makes a fantastic supplement to understanding math from a different angle.
I appreciated the introductory chapters and the very short epilogue with some clear principles. The six central chapters on various classes of algorithms are not meant to be read from cover to cover, but rather to be used as quick reference when you have a problem and explanations elsewhere failed to illuminate you. I've skimmed most chapters and found them pretty clear. Do note that the book assumes intermediate programming skills in at least one of the example programming languages (mostly Java, C++, Ruby) and, for some proofs, knowledge of calculus at high school/first year of university level. There are additional references to explore the details if that's what you're looking for.
This is a rather timeless book. These algorithms have been relevant for decades, as have most of the programming languages used to illustrate them. I sure hope most readers won't have to handle low-level memory allocation tricks shown here, but seeing how C/C++ works (or doesn't) remains very educational to learn how computers work.
5 stars were sealed when the authors managed to teach me some Scheme and mentioned Ward Cunningham and the Gang of Four.
This book gives a short but broad overview of popular algorithms.
In general, there is just technical implementation and description of each topic and lack of context/applications. In my opinion, the context of algorithms would not only improve readability, but also help understand topic better(as it was in last chapter). I liked author's approach of comparing different algorithms in terms of time & space complexity. Some ideas were presented poorly and basic wikipedia page was much clearer to me.
Assumes a lot of knowledge. Not written in a clear or understandable way. A lot of information in the book isn't required which slows down progress getting to the crux of the information.
The book uses too much of its space to talk about benchmarks that serve no purpose. Those benchmarks are machine-dependent and it will be different for each machine that runs them. It is pointless to even look at them.
The analysis of the presented algorithms is very superficial.
This is not a book I would pick as a first book and I wouldn't go out of my way to read it. Because I've made already to the 7th chapter, I will finish it. But only because I've already invested too much time into it.
This is a nice little book to keep on a shelf. It wouldn't be my first pick as a reference for algorithms, however. It was worth reading as it doesn't focus much on the theory of algorithms, instead it focuses on the application of algorithms. It has very helpful "fact sheets" that includes pseudocode and run-time complexity for common algorithms. Overall, it is definitely worth reading but I wouldn't go out of my way to read it.
Average quality. Wouldn't recommend this book. Lacks struсture (not clear why this set of algorithms is covered and why in this order), lacks theoretical soundness, almost no algorithm analysis. The books is definitely not appropriate for learning those algorithms from scratch, and not even particularly appropriate for refreshing the knowledge. One positive factor I can highlight: nice graphical summaries and overall nice illustration for algorithms.
This book is amazingly awesome. Super practical boiled down algorithms useful for everyday programming and extremely well organized for reference and algorithm selection. Although not light reading, it is very non-crufty. This is a great book to read and have on the bookshelf for those deeply involved in the craft of programming.
A reference any programmer can benefit from, yes you might have covered some of these algorithms in college/school but this is a concise practical format with some good low level examples of implementation. I read this in preparing for interviews and it helped enormously, refreshing algorithms that I'd neglected or used seldom.
A decent recap of major algorithms, but too much time is spent on showing tables of not-very-valuable runtime performance numbers. More text could have been devote to the concepts themselves or pseudo-code that skipped the implementation details to keep things concise.