A Practical Guide to Data Structures and Algorithms using Java

Free Standard Shipping

Purchasing Options

ISBN 9781584884552
Cat# C455X



SAVE 20%

eBook (VitalSource)
ISBN 9781420010336
Cat# CE455X



SAVE 30%

eBook Rentals

Other eBook Options:


  • Guides readers to the most natural and efficient data structure for their application through an organized, practical, top-down approach
  • Exploits object-oriented design principles in clean Java implementations that expose key differences among related data structures and algorithms
  • Discusses design decisions, optimizations, and correctness highlights to deepen understanding and to provide opportunities for guided customization of the provided Java implementations
  • Includes accessible comparison tables that support rapid assessment of trade-offs among implementations, as well as complete asymptotic analysis for detailed comparison
  • Presents case studies and examples to provide motivation and illustrate the methodology
  • Provides complete documentation and Java implementations on the accompanying CD-ROM
  • Offers a solutions manual for qualifying instructors
  • Online Teaching Supplement Available
  • An instructor’s website (http://goldman.cse.wustl.edu/) with a syllabus (for a fourteen-week semester), sample practice problems with solutions, homework assignments, programming assignments, and several exams
  • A homework and programming assignment guide, homework solutions, programming assignment solutions, and exam solutions available on request to qualifying instructors
  • Summary

    Although traditional texts present isolated algorithms and data structures, they do not provide a unifying structure and offer little guidance on how to appropriately select among them. Furthermore, these texts furnish little, if any, source code and leave many of the more difficult aspects of the implementation as exercises. A fresh alternative to conventional data structures and algorithms books, A Practical Guide to Data Structures and Algorithms using Java presents comprehensive coverage of fundamental data structures and algorithms in a unifying framework with full implementation details. Recognizing that software development is a top-down process, this applications-centered book provides careful guidance to students and practitioners.

    Complete and thoroughly integrated Java implementations expose key differences among a wide range of important data structures, including many useful abstract data types not provided in standard Java libraries. Fundamental algorithms appear within the context of their supporting data structures. Case studies, examples, decision trees, and comparison charts throughout the stylized presentation illustrate and support an efficient methodology for the careful selection and application of data structures and algorithms. Appendices summarize major features of the Java programming language, introduce asymptotic notation and complexity analysis, and discuss design patterns applied in the book.

    A true marriage of theory and practice, this book sets a new standard as a comprehensive practical guide to data structures and algorithms. Practitioners and students will reach for this book often to quickly identify the best data structure or algorithm for their applications.

    Table of Contents

    Design Principles
    Selecting an Abstract Data Type
    How to Use This Book
    Union-Find Data Structure
    Array (including quicksort, merge sort, insertion sort, heap sort, tree sort, radix sort, bucket sort, selection/median finding)
    Circular Array
    Dynamic Array
    Dynamic Circular Array
    Tracked Array
    Singly Linked List
    Doubly Linked List
    Direct Addressing
    Separate Chaining
    Open Addressing
    Binary Heap
    Leftist Heap
    Pairing Heap
    Fibonacci Heap
    Sorted Array (including binary search)
    Binary Search Tree
    Red-Black Tree
    Splay Tree
    Skip List
    Compact Trie
    Compressed Trie
    Patricia Trie
    Ternary Search Trie
    Quad Tree
    Tagged Collection Wrapper (supports using arbitrary collections for tag/key-based insertion and lookup)
    Tagged Bucket Collection Wrapper (supports grouping elements with the same tag)
    Adjacency Matrix
    Adjacency List
    Breadth-First Search
    Depth-First Search
    Connected Components
    Topological Sort
    Strongly Connected Components
    Dijkstra’s and Bellman–Ford’s Single-Source Shortest Path Algorithms
    Floyd–Warshall All-Pairs Shortest Path
    Prim’s and Kruskal’s Minimum Spanning Tree Algorithms
    Edmonds–Karp Maximum Flow Algorithm
    Java Fundamentals
    Complexity Analysis
    Design Patterns

    Editorial Reviews

    “This is no ordinary textbook on algorithms and data structures. In fact, it is not really a textbook at all, but rather an extraordinarily powerful and practical reference book. It is perhaps the most thorough and complete catalog of fundamental algorithms that I have ever seen. The book is extremely well organized, and has been carefully designed to provide practical help for a student or developer with a specific problem at hand who is seeking the most appropriate data structure or abstract data type. Everything that one might wish for with this goal in mind has been provided, including a top-down guide that provides an organizational map of the myriad data structures to choose from, comparisons between competing choices, short descriptions for quick reference, longer explanations for detailed understanding, performance analyses, correctness arguments, plus a CD with full Java implementations. This is a tremendously valuable practical resource.”
    —Robert Schapire, Professor of Computer Science, Princeton University, New Jersey, USA

    “The Goldmans’ new book is a tour de force of data structures and associated algorithms, accomplishing far more than any single author could hope to achieve. Theory and practice are represented in complementary fashion, with clever mechanisms such as ‘correctness highlights’ and tables illustrating space and time complexity tradeoffs between different implementation options. The book is extremely well designed as a reference with value that extends well beyond Java programmers. I can imagine that the decision tree inside the front cover will be placed in a prominent location in many graduate student and developer work spaces. I intend to make sure my students consult it before launching into any significant implementation.”
    —Ellen Witte Zegura, Professor, Associate Dean, and Chair of the Computing Science and Systems Division, Georgia Institute of Technology, Atlanta, USA

    “In this impressive book, [the authors] combine practical guidance on how to select and use important ADTs and data structures with a clear presentation of the underlying theory. I do not know of any other book that is able to simultaneously address both application and theory so well. One of my favorite features of this book is that for each data structure given, there is a presentation of competing data structures and how they compare. This allows the reader to quickly place the new data structure into context as well as to find the best data structure for a given application.”
    —Avrim Blum, Professor of Computer Science, Carnegie Mellon University, Pittsburgh, Pennsylvania, USA

    “This is the first book I know of that teaches the theory and practice of algorithm and data structure design in a clear and comprehensive way. For each topic it presents a motivating example, a clear ADT, various implementations, and a guide for comparing different implementations. Each implementation is followed by a detailed and clear theoretical analysis, a complete Java implementation, and a discussion of the used design patterns. This book is a thorough textbook as well as a great reference book!”
    —Monika Henzinger, Professor of Computer and Communication Sciences, École Polytechnique Fédérale de Lausanne, Switzerland, and Research Director, Google

    “This book presents a principled approach to covering many practical abstract data types. It is nicely modular and neither glosses over all-important implementation details nor gets lost in them. Having variations for different usage patterns is especially useful. I highly recommend this book both for practitioners and for students learning data structures and algorithms.”
    —Andries van Dam, Thomas J. Watson, Jr. Professor of Technology and Education and Professor of Computer Science, Brown University, Providence, Rhode Island, USA

    Downloads / Updates

    Resource OS Platform Updated Description Instructions
    C455X_Companion_CD.zip Cross Platform March 17, 2014