As the speed and power of computers increases, so does the need for effective programming and algorithm analysis. By approaching these skills in tandem, Mark Allen Weiss teaches readers to develop well-constructed, maximally efficient programs in Java. A full language update to Java 5.0 throughout the text--particularly its use of generics-adds immeasurable value to this advanced study of data structures and algorithms. This Second Edition features integrated coverage of the Java Collections Library as well as a complete revision of lists, stacks, queues, and trees. Weiss clearly explains topics from binary heaps to sorting to NP-completeness, and dedicates a full chapter to amortized analysis and advanced data structures and their implementation. Figures and examples illustrating successive stages of algorithms contribute to Weiss' careful, rigorous and in-depth analysis of each type of algorithm. A logical organization of topics and full access to source code compliment the text's coverage.