Algorithms are at the heart of every nontrivial computer application, and algorithmics is a modern and active area of computer science. Every computer scientist and every professional programmer should know about the basic algorithmic toolbox: structures that allow efficient organization and retrieval of data, frequently used algorithms, and basic techniques for modeling, understanding and solving algorithmic problems.
This book is a concise introduction addressed to students and professionals familiar with programming and basic mathematical language. Individual chapters cover arrays and linked lists, hash tables and associative arrays, sorting and selection, priority queues, sorted sequences, graph representation, graph traversal, shortest paths, minimum spanning trees, and optimization. The algorithms are presented in a modern way, with explicitly formulated invariants, and comment on recent trends such as algorithm engineering, memory hierarchies, algorithm libraries and certifying algorithms. The authors use pictures, words and high-level pseudocode to explain the algorithms, and then they present more detail on efficient implementations using real programming languages like C++ and Java.
The authors have extensive experience teaching these subjects to undergraduates and graduates, and they offer a clear presentation, with examples, pictures, informal explanations, exercises, and some linkage to the real world. Most chapters have the same basic structure: a motivation for the problem, comments on the most important applications, and then simple solutions presented as informally as possible and as formally as necessary. For the more advanced issues, this approach leads to a more mathematical treatment, including some theorems and proofs. Finally, each chapter concludes with a section on further findings, providing views on the state of research, generalizations and advanced solutions.
This book is a concise introduction addressed to students and professionals familiar with programming and basic mathematical language. Individual chapters cover arrays and linked lists, hash tables and associative arrays, sorting and selection, priority queues, sorted sequences, graph representation, graph traversal, shortest paths, minimum spanning trees, and optimization. The algorithms are presented in a modern way, with explicitly formulated invariants, and comment on recent trends such as algorithm engineering, memory hierarchies, algorithm libraries and certifying algorithms. The authors use pictures, words and high-level pseudocode to explain the algorithms, and then they present more detail on efficient implementations using real programming languages like C++ and Java.
The authors have extensive experience teaching these subjects to undergraduates and graduates, and they offer a clear presentation, with examples, pictures, informal explanations, exercises, and some linkage to the real world. Most chapters have the same basic structure: a motivation for the problem, comments on the most important applications, and then simple solutions presented as informally as possible and as formally as necessary. For the more advanced issues, this approach leads to a more mathematical treatment, including some theorems and proofs. Finally, each chapter concludes with a section on further findings, providing views on the state of research, generalizations and advanced solutions.
"This is another mainstream textbook on algorithms and data structures, mainly intended for undergraduate students and professionals ... . The two-layer index table is also detailed and helpful. I do enjoy reading the informative sections of historical notes and further findings at the end of each chapter. ... This book is very well written, with the help of ... clear figures and tables, as well as many interesting and inspiring examples." Zhizhang Shen, Zentralblatt MATH, Vol. 1146, 2008
"... the book develops the basic fundamental principles underlying their design and analysis without sacrificing depth or rigor. The authors' insight, knowledge and active research on algorithms and data structures provide a very solid approach to the book. I particularly liked their "as informally as possible and as formally as necessary" writing style, and I enjoyed a lot their decision to not only discuss classical results, but to broaden the view to alternative implementations, memory hierarchies and libraries, which transmits novelty and increases interest...
I think that this book will be a superb addition particularly useful for teachers of undergraduate courses, to graduate students in Computer Science, and to researchers that work, or intend to work, with algorithms." Jordi Petit, Computer Science Review 3, 2009
"Mehlhorn and Sanders write well, and the well-organized presentation reflects their experience and interest in the various topics... it is an excellent reference, and could possibly be used in a transition course, serving students coming to graduate CS courses from other technical fields. [...]
This text is intended for undergraduate computer science (CS) majors, and focuses on algorithm analysis. ... it is an excellent reference, and could possibly be used in a transition course, serving students coming to graduate CS courses from other technical fields. Finally, the book contains interesting tidbits thatare not readily available elsewhere." M. G. Murphy, ACM Computing Reviews, October 2008
"A 'Toolbox' should be portable, practical, and useful. This book is all these, covering a nice swath of the classic CS algorithms but addressing them in a way that is accessible to the student and practitioner. Furthermore, it manages to incorporate interesting examples as well as subtle examples of wit compressed into its 300 pages. Although it is not tied to any one language or library, it provides practical references to efficient open-source implementations of many of the algorithms and data structures; these should be the first refuge of the commercial developer. I can easily recommend this book as an intermediate undergraduate text, a refresher for those of us who only dimly remember our intermediate undergraduate courses, and as a reference for the professional development craftsman." Hal C. Elrod, SIGACT News Book Review Column 42(4) 2011
"... the book develops the basic fundamental principles underlying their design and analysis without sacrificing depth or rigor. The authors' insight, knowledge and active research on algorithms and data structures provide a very solid approach to the book. I particularly liked their "as informally as possible and as formally as necessary" writing style, and I enjoyed a lot their decision to not only discuss classical results, but to broaden the view to alternative implementations, memory hierarchies and libraries, which transmits novelty and increases interest...
I think that this book will be a superb addition particularly useful for teachers of undergraduate courses, to graduate students in Computer Science, and to researchers that work, or intend to work, with algorithms." Jordi Petit, Computer Science Review 3, 2009
"Mehlhorn and Sanders write well, and the well-organized presentation reflects their experience and interest in the various topics... it is an excellent reference, and could possibly be used in a transition course, serving students coming to graduate CS courses from other technical fields. [...]
This text is intended for undergraduate computer science (CS) majors, and focuses on algorithm analysis. ... it is an excellent reference, and could possibly be used in a transition course, serving students coming to graduate CS courses from other technical fields. Finally, the book contains interesting tidbits thatare not readily available elsewhere." M. G. Murphy, ACM Computing Reviews, October 2008
"A 'Toolbox' should be portable, practical, and useful. This book is all these, covering a nice swath of the classic CS algorithms but addressing them in a way that is accessible to the student and practitioner. Furthermore, it manages to incorporate interesting examples as well as subtle examples of wit compressed into its 300 pages. Although it is not tied to any one language or library, it provides practical references to efficient open-source implementations of many of the algorithms and data structures; these should be the first refuge of the commercial developer. I can easily recommend this book as an intermediate undergraduate text, a refresher for those of us who only dimly remember our intermediate undergraduate courses, and as a reference for the professional development craftsman." Hal C. Elrod, SIGACT News Book Review Column 42(4) 2011
From the reviews: "This is another mainstream textbook on algorithms and data structures, mainly intended for undergraduate students and professionals ... . The two-layer index table is also detailed and helpful. I do enjoy reading the informative sections of historical notes and further findings at the end of each chapter. ... This book is very well written, with the help of ... clear figures and tables, as well as many interesting and inspiring examples." (Zhizhang Shen, Zentralblatt MATH, Vol. 1146, 2008) "... the book develops the basic fundamental principles underlying their design and analysis without sacrificing depth or rigor.The authors' insight, knowledge and active research on algorithms and data structures provide a very solid approach to the book. I particularly liked their "as informally as possible and as formally as necessary" writing style, and I enjoyed a lot their decision to not only discuss classical results, but to broaden the view to alternative implementations, memory hierarchies and libraries, which transmits novelty and increases interest...I think that this book will be a superb addition particularly useful for teachers of undergraduate courses, to graduate students in Computer Science, and to researchers that work, or intend to work, with algorithms." (Jordi Petit, Computer Science Review 3, 2009) "Mehlhorn and Sanders write well, and the well-organized presentation reflects their experience and interest in the various topics... it is an excellent reference, and could possibly be used in a transition course, serving students coming to graduate CS courses from other technical fields." (M.G. Murphy, ACM Computing Reviews, October 2008) "This text is intended for undergraduate computer science (CS) majors, and focuses on algorithm analysis. ... it is an excellent reference, and could possibly be used in a transition course, serving students coming to graduate CS courses from other technical fields. Finally, the book contains interesting tidbits that are not readily available elsewhere." (M. G. Murphy, ACM Computing Reviews, October, 2008)