You are previewing Essential Algorithms: A Practical Approach to Computer Algorithms.
O'Reilly logo
Essential Algorithms: A Practical Approach to Computer Algorithms

Book Description

A friendly and accessible introduction to the most useful algorithms

Computer algorithms are the basic recipes for programming. Professional programmers need to know how to use algorithms to solve difficult programming problems. Written in simple, intuitive English, this book describes how and when to use the most practical classic algorithms, and even how to create new algorithms to meet future needs. The book also includes a collection of questions that can help readers prepare for a programming job interview.

  • Reveals methods for manipulating common data structures such as arrays, linked lists, trees, and networks

  • Addresses advanced data structures such as heaps, 2-3 trees, B-trees

  • Addresses general problem-solving techniques such as branch and bound, divide and conquer, recursion, backtracking, heuristics, and more

  • Reviews sorting and searching, network algorithms, and numerical algorithms

  • Includes general problem-solving techniques such as brute force and exhaustive search, divide and conquer, backtracking, recursion, branch and bound, and more

In addition, Essential Algorithms features a companion website that includes full instructor materials to support training or higher ed adoptions.

Table of Contents

  1. Cover Page
  2. Title Page
  3. Copyright
  4. About the Author
  5. Credits
  6. Acknowledgments
  7. Contents at a Glance
  8. Contents
  9. Introduction
    1. Algorithm Selection
    2. Who This Book Is For
    3. Getting the Most Out of This Book
    4. This Book's Websites
    5. How This Book Is Structured
    6. What You Need to Use This Book
    7. Conventions
    8. Email Me
  10. CHAPTER 1: Algorithm Basics
    1. Approach
    2. Algorithms and Data Structures
    3. Pseudocode
    4. Algorithm Features
    5. Practical Considerations
    6. Summary
    7. Exercises
  11. CHAPTER 2: Numerical Algorithms
    1. Randomizing Data
    2. Finding Greatest Common Divisors
    3. Performing Exponentiation
    4. Working with Prime Numbers
    5. Performing Numerical Integration
    6. Finding Zeros
    7. Summary
    8. Exercises
  12. CHAPTER 3: Linked Lists
    1. Basic Concepts
    2. Singly Linked Lists
    3. Doubly Linked Lists
    4. Sorted Linked Lists
    5. Linked-List Algorithms
    6. Linked List Selectionsort
    7. Multithreaded Linked Lists
    8. Linked Lists with Loops
    9. Summary
    10. Exercises
  13. CHAPTER 4: Arrays
    1. Basic Concepts
    2. One-dimensional Arrays
    3. Nonzero Lower Bounds
    4. Triangular Arrays
    5. Sparse Arrays
    6. Matrices
    7. Summary
    8. Exercises
  14. CHAPTER 5: Stacks and Queues
    1. Stacks
    2. Queues
    3. Summary
    4. Exercises
  15. CHAPTER 6: Sorting
    1. O(N 2 ) Algorithms
    2. O(N log N) Algorithms
    3. Sub O(N log N) Algorithms
    4. Summary
    5. Exercises
  16. CHAPTER 7: Searching
    1. Linear Search
    2. Binary Search
    3. Interpolation Search
    4. Summary
    5. Exercises
  17. CHAPTER 8: Hash Tables
    1. Hash Table Fundamentals
    2. Chaining
    3. Open Addressing
    4. Summary
    5. Exercises
  18. CHAPTER 9: Recursion
    1. Basic Algorithms
    2. Graphical Algorithms
    3. Backtracking Algorithms
    4. Selections and Permutations
    5. Recursion Removal
    6. Summary
    7. Exercises
  19. CHAPTER 10: Trees
    1. Tree Terminology
    2. Binary Tree Properties
    3. Tree Representations
    4. Tree Traversal
    5. Sorted Trees
    6. Threaded Trees
    7. Specialized Tree Algorithms
    8. Summary
    9. Exercises
  20. CHAPTER 11: Balanced Trees
    1. AVL Trees
    2. 2-3 Trees
    3. B-Trees
    4. Balanced Tree Variations
    5. Summary
    6. Exercises
  21. CHAPTER 12: Decision Trees
    1. Searching Game Trees
    2. Searching General Decision Trees
    3. Summary
    4. Exercises
  22. CHAPTER 13: Basic Network Algorithms
    1. Network Terminology
    2. Network Representations
    3. Traversals
    4. Finding Paths
    5. Summary
    6. Exercises
  23. CHAPTER 14: More Network Algorithms
    1. Topological Sorting
    2. Cycle Detection
    3. Map Coloring
    4. Maximal Flow
    5. Summary
    6. Exercises
  24. CHAPTER 15: String Algorithms
    1. Matching Parentheses
    2. Pattern Matching
    3. String Searching
    4. Calculating Edit Distance
    5. Summary
    6. Exercises
  25. CHAPTER 16: Cryptography
    1. Terminology
    2. Transposition Ciphers
    3. Substitution Ciphers
    4. Block Ciphers
    5. Public-Key Encryption and RSA
    6. Other Uses for Cryptography
    7. Summary
    8. Exercises
  26. CHAPTER 17: Complexity Theory
    1. Notation
    2. Complexity Classes
    3. Reductions
    4. NP-Hardness
    5. Detection, Reporting, and Optimization Problems
    6. NP-Complete Problems
    7. Summary
    8. Exercises
  27. CHAPTER 18: Distributed Algorithms
    1. Types of Parallelism
    2. Distributed Algorithms
    3. Summary
    4. Exercises
  28. CHAPTER 19: Interview Puzzles
    1. Asking Interview Puzzle Questions
    2. Answering Interview Puzzle Questions
    3. Summary
    4. Exercises
  29. APPENDIX A: Summary of Algorithmic Concepts
    1. Chapter 1 : Algorithm Basics
    2. Chapter 2 : Numeric Algorithms
    3. Chapter 3 : Linked Lists
    4. Chapter 4 : Arrays
    5. Chapter 5 : Stacks and Queues
    6. Chapter 6 : Sorting
    7. Chapter 7 : Searching
    8. Chapter 8 : Hash Tables
    9. Chapter 9 : Recursion
    10. Chapter 10 : Trees
    11. Chapter 11 : Balanced Trees
    12. Chapter 12 : Decision Trees
    13. Chapter 13 : Basic Network Algorithms
    14. Chapter 14 : More Network Algorithms
    15. Chapter 15 : String Algorithms
    16. Chapter 16 : Cryptography
    17. Chapter 17 : Complexity Theory
    18. Chapter 18 : Distributed Algorithms
    19. Chapter 19 : Interview Puzzles
  30. APPENDIX B: Solutions to Exercises
    1. Chapter 1 : Algorithm Basics
    2. Chapter 2 : Numerical Algorithms
    3. Chapter 3 : Linked Lists
    4. Chapter 4 : Arrays
    5. Chapter 5 : Stacks and Queues
    6. Chapter 6 : Sorting
    7. Chapter 7 : Searching
    8. Chapter 8 : Hash Tables
    9. Chapter 9 : Recursion
    10. Chapter 10 : Trees
    11. Chapter 11 : Balanced Trees
    12. Chapter 12 : Decision Trees
    13. Chapter 13 : Basic Network Algorithms
    14. Chapter 14 : More Network Algorithms
    15. Chapter 15 : String Algorithms
    16. Chapter 16 : Encryption
    17. Chapter 17 : Complexity Theory
    18. Chapter 18 : Distributed Algorithms
    19. Chapter 19 : Interview Puzzles
  31. Glossary
  32. Index