Page 2 of 5
This book was published hot on the heels of its C++ flavor predecessor, Introduction to Data Structures and Algorithms with C++ (Prentice-Hall, 1997, also by Rowe). As a result, large chunks of text were taken verbatim from the earlier C++ text, but
unfortunately (surprise, surprise), these do not apply or break down in the context of Java. (And I'm not even thinking about
the omnipresent use of the term pointer when reference would be more accurate.) Then there are errors, such as the statement that "it is also necessary to initialize the individual
elements of the [Object] array in the constructor. It was not necessary to do this in IntStack, since there we were dealing with primitive data types." Such phrases are comments about the author's Stack class constructor and prove that Rowe didn't understand how Java arrays work when he wrote that first sentence. When it comes
to coding, standard Java naming conventions are consistently flouted and (logical) while loops are implemented with for( ; condition; modifier). A simple interface Comparable (to allow sorting of arbitrary items) is defined as:
public interface Comparable {
public boolean lessThan(Comparable other);
public boolean equalTo(Comparable other);
}
Why require an equalTo() when java.lang.Object already has an equals() with the right semantics? Worse, many of the implementations of data structures and algorithms are not reusable as-is because they're stuck, embedded in test harness code! Lastly, for a book that was launched
in 1998, the author can't be tracking Java developments very closely; many of his exception-handling code uses the old-style
(illegal by now) try-catch, which doesn't require blocks.

This book can't possibly aim for the higher education market because its content thoroughly deviates from standard DS&A texts. Granted, the title only promises that the pages will focus on algorithms, which is a much broader subject matter than "merely" that of algorithms associated with classic data structures (many numerical algorithms, for example, have nothing to do with data structures). Anyway, from the overview I give below, you can judge for yourself which chapters can be considered the proverbial odd ones out, or even completely out of context for this type of book.
Chapter 1 "Sorting Things Out" hits the ground running by flying through coverage (and implementation) of Selection sort, Insertion sort, and Shell sort in just five pages. Almost the entire remainder of the chapter, nearly 20 pages, is devoted to the classic QuickSort. This heavily biased approach gave me the impression that the author judged QuickSort to be the only sorting algorithm worth writing about. It is also in these pages that you get to like or hate one particular aspect of the writing style that permeates this book: The author loves to use the first person at every opportunity ("I did", "I found", "My solution", "My requirements"). Indeed, the thesis of the book often comes across as "Hey, look at my cool library of classes." The unfortunate side effect of his style is that the presented material doesn't seem to have been crafted for, or targeted at, you, the reader, but rather amounts to documentation for some of the author's personal, but admittedly valuable, Java class library.