Like the first edition, this second edition is a fine resource book that can be valuable to teachers and learners of computer science as well as to computer science researchers and practitioners. Programmers in other disciplines such as science, engineering, and operations research might also find it to be an excellent reference. After the first two chapters of introductory material, which include notation and description conventions for data structures and algorithms, excellent chapters cover five categories of algorithms: searching, sorting, selection, arithmetic, and text (new to the second edition).
I have routinely used the first edition, authored by Gonnet, during the past few years [1]. Typically, I refer to it when I have a question about how a particular algorithm or data structure works, or about some aspect of an algorithm’s complexity. I have other favorite references (notably Aho, Hopcroft, and Ullman’s 1974 book [2] and Knuth’s three volumes [3-5], but the easy-reference, handbook nature of this work makes it particularly useful for a quick search. The taxonomy of algorithms, that is, the distribution of the collection into sorting, searching, selection, and arithmetic algorithms is exactly right. The first edition is the first source in which I saw selection algorithms so clearly distinguished from sorting and searching algorithms, and in which the class of selection algorithms was unified and addressed.
This edition, co-authored by Baeza-Yates, includes a new chapter on text algorithms. This chapter is the most comprehensive treatment of text algorithms that I have seen. It is clear and accessible.
The choice of algorithm families is good, as is the fairly complete set of algorithms given in each family (complete to the extent that the development of algorithms is ever complete). Algorithms are coded in both Pascal and C. The full set of references at the end of the book is comprehensive, and a list of references appears at the end of every section. The references are well done and extremely useful.
Gonnet offered two dollars to readers who found errors in the first edition. Understandably, the second edition is relatively error-free. In the second edition, the authors offer four dollars for each error. They are serious about correctness. This is not a textbook, but it would probably be a useful reference for any serious student of computer science.
This excellent book is intended to be a collection of notable algorithms and data structures that have been developed throughout the relatively short history of computer science. It is intended to help readers to build upon work already done, rather than to redo that work over and over again. The book fulfills its purpose with perfect scope and depth.