ACCU Home page ACCU Conference Page
Search Contact us ACCU at Flickr ACCU at GitHib ACCU at Google+ ACCU at Facebook ACCU at Linked-in ACCU at Twitter Skip Navigation

Search in Book Reviews

The ACCU passes on review copies of computer books to its members for them to review. The result is a large, high quality collection of book reviews by programmers, for programmers. Currently there are 1918 reviews in the database and more every month.
Search is a simple string search in either book title or book author. The full text search is a search of the text of the review.
    View all alphabetically
Title:
Data Structures and Algorithms Analysis in C++, 3rd Edition
Author:
Mark Allen Weiss
ISBN:
0321397339
Publisher:
Addison Wesley
Pages:
586
Price:
Reviewer:
Frances Buontempo
Subject:
C++;algorithms
Appeared in:

This book provides a thorough introduction and in depth look at how to define the complexity of an algorithm and then goes on to look a various structures including lists, stacks, queues and trees. The algorithms encompass sorting, disjoint set classes (i.e. equivalence relations) and graphs. Various techniques such as greedy versus divide and conquer, randomised and backtracking algorithms plus dynamic programming are detailed. A clear, in depth explanation of amortized analysis is presented and finally other specialised data structures such as splay trees, red-black trees, skip lists, other trees, traps, and pairing heaps are covered.

Prior to this, the book starts with a hit and run overview of C++ (including classes, std::vector and std::string, pointers, parameter passing, templates and functors) and mathematics (exponents, logarithms, series, modular arithmetic and proofs). Prior to starting a computer science course, a friend with advanced-level school mathematics background worked through the revision mathematics session with me. Suffice to say it served as a good basis of things to learn but was too sparse and terse to be of any use other than as a pointer to which topics to pursue in another book. The same is true of the C++ introduction, though the author lists all the right books for a C++ rookie to buy and read.

Introductory chapter aside, this book is very well written, and given the in-depth technical content, a pleasure to read. The algorithmic analysis gives detailed mathematical proofs, for example of the complexity of operations on a variety of data structures. Without a strong mathematical background or some determination, this could prove heavy going but worth it. The illustrations frequently manage to convey some complicated ideas with clarity. There is enough sample code to build examples to pursue the ideas further, but this does not distract from the main narrative as can happen with some books.

The majority of the material covered in this book is probably amply covered elsewhere (Knuth springs to mind). Nonetheless it pulls together a neat selection of ideas and presents them in a format that can be read in a few (determined) sittings. The introductory chapter will be little use to beginners and of limited value for those in the know, but apart from that this is a good book.

Recommended with the reservation: buy if you can afford it and don't already have Knuth or similar, or have Knuth and can't manage to read it from cover to cover but wanted to.