Data Structures and Algorithm Analysis in Java

Mark Allen Weiss  
Total pages
February 2012
Related Titles


Data Structures and Algorithm Analysis in Java is an advanced algorithms book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. It is also suitable for a first-year graduate course in algorithm analysis

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.

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 complement the text’s coverage.


  • This text is designed to teach students good programming and algorithm analysis skills simultaneously so that they can develop intricate programs with the maximum amount of efficiency.
  • By analyzing an algorithm before it is actually coded, students can decide if a particular solution will be feasible and see how careful implementations can reduce the time constraint for large amounts of data. No algorithm or data structure is presented without an explanation of its running time.
  • This book is suitable for either an advanced data structures (CS7) course or a first-year graduate course in algorithm analysis. As introductory sequences expand from two to three courses, this book is ideal at the end of the third course, bridging the way to the Algorithms course.
  • Integrated coverage of the Java Collections Library.
  • Discussion of algorithm and design techniques covers greedy algorithms, divide and conquer algorithms, dynamic programming, randomized algorithms, and backtracking.
  • Covers topics and data structures such as Fibonacci heaps, skew heaps, binomial queue, skip lists and splay trees.
  • A full chapter on amortized analysis examines the advanced data structures presented earlier in the book.
  • Chapter on advanced data structures and their implementation covers red black trees, top down splay trees, k-d trees, pairing heaps, and more.
  • Numerous figures and examples illustrate successive stages of algorithms.
  • End-of-chapter exercises, ranked by difficulty, reinforce key chapter concepts.
  • End-of-chapter references are either historical, representing the original source of the material, or they represent extensions and improvements to the results given in the text.
  • The following Instructor Resources are available on the Instructor Resource Center:
    • Source code for example programs
    • PowerPoint slides
    • Solution Manual

New to this Edition

  • Full integration of Java 7, including diamonds
  • Updates in Ch 5 including universal hashing and perfect hashing
  • Addition of lower bound material in Ch 7; removal of external sorting
  • New analysis in Ch 8 for disjoint sets

Instructor Resources