Essential Algorithms, 2nd Edition

Book description

A friendly introduction to the most useful algorithms written in simple, intuitive English

The revised and updated second edition of Essential Algorithms, offers an accessible introduction to computer algorithms. The book contains a description of important classical algorithms and explains when each is appropriate. The author shows how to analyze algorithms in order to understand their behavior and teaches techniques that the can be used to create new algorithms to meet future needs. The text includes useful algorithms such as: methods for manipulating common data structures, advanced data structures, network algorithms, and numerical algorithms. It also offers a variety of general problem-solving techniques.

In addition to describing algorithms and approaches, the author offers details on how to analyze the performance of algorithms. The book is filled with exercises that can be used to explore ways to modify the algorithms in order to apply them to new situations. This updated edition of Essential Algorithms:

  • Contains explanations of algorithms in simple terms, rather than complicated math
  • Steps through powerful algorithms that can be used to solve difficult programming problems
  • Helps prepare for programming job interviews that typically include algorithmic questions
  • Offers methods can be applied to any programming language
  • Includes exercises and solutions useful to both professionals and students
  • Provides code examples updated and written in Python and C#

Essential Algorithms has been updated and revised and offers professionals and students a hands-on guide to analyzing algorithms as well as the techniques and applications. The book also includes a collection of questions that may appear in a job interview. The book’s website will include reference implementations in Python and C# (which can be easily applied to Java and C++).

Table of contents

  1. Cover
  2. Introduction
    1. Why You Should Study Algorithms
    2. Algorithm Selection
    3. Who This Book Is For
    4. Getting the Most Out of This Book
    5. This Book's Websites
    6. How This Book Is Structured
    7. What You Need to Use This Book
    8. Conventions
    9. How to Contact the Author
  3. CHAPTER 1: Algorithm Basics
    1. Approach
    2. Algorithms and Data Structures
    3. Pseudocode
    4. Algorithm Features
    5. Practical Considerations
    6. Summary
    7. Exercises
  4. 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. Gaussian Elimination
    8. Least Squares Fits
    9. Summary
    10. Exercises
  5. CHAPTER 3: Linked Lists
    1. Basic Concepts
    2. Singly Linked Lists
    3. Doubly Linked Lists
    4. Sorted Linked Lists
    5. Self-Organizing Linked Lists
    6. Linked-List Algorithms
    7. Multithreaded Linked Lists
    8. Linked Lists with Loops
    9. Summary
    10. Exercises
  6. 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
  7. CHAPTER 5: Stacks and Queues
    1. Stacks
    2. Queues
    3. Binomial Heaps
    4. Summary
    5. Exercises
  8. CHAPTER 6: Sorting
    1. Algorithms
    2. Algorithms
    3. Sub Algorithms
    4. Summary
    5. Exercises
  9. CHAPTER 7: Searching
    1. Linear Search
    2. Binary Search
    3. Interpolation Search
    4. Majority Voting
    5. Summary
    6. Exercises
  10. CHAPTER 8: Hash Tables
    1. Hash Table Fundamentals
    2. Chaining
    3. Open Addressing
    4. Summary
    5. Exercises
  11. CHAPTER 9: Recursion
    1. Basic Algorithms
    2. Graphical Algorithms
    3. Backtracking Algorithms
    4. Selections and Permutations
    5. Recursion Removal
    6. Summary
    7. Exercises
  12. CHAPTER 10: Trees
    1. Tree Terminology
    2. Binary Tree Properties
    3. Tree Representations
    4. Tree Traversal
    5. Sorted Trees
    6. Lowest Common Ancestors
    7. Threaded Trees
    8. Specialized Tree Algorithms
    9. Interval Trees
    10. Summary
    11. Exercises
  13. CHAPTER 11: Balanced Trees
    1. AVL Trees
    2. 2-3 Trees
    3. B-Trees
    4. Balanced Tree Variations
    5. Summary
    6. Exercises
  14. CHAPTER 12: Decision Trees
    1. Searching Game Trees
    2. Searching General Decision Trees
    3. Swarm Intelligence
    4. Summary
    5. Exercises
  15. CHAPTER 13: Basic Network Algorithms
    1. Network Terminology
    2. Network Representations
    3. Traversals
    4. Strongly Connected Components
    5. Finding Paths
    6. Transitivity
    7. Shortest Path Modifications
    8. Summary
    9. Exercises
  16. CHAPTER 14: More Network Algorithms
    1. Topological Sorting
    2. Cycle Detection
    3. Map Coloring
    4. Maximal Flow
    5. Network Cloning
    6. Cliques
    7. Community Detection
    8. Eulerian Paths and Cycles
    9. Summary
    10. Exercises
  17. CHAPTER 15: String Algorithms
    1. Matching Parentheses
    2. Pattern Matching
    3. String Searching
    4. Calculating Edit Distance
    5. Phonetic Algorithms
    6. Summary
    7. Exercises
  18. 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
  19. 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
  20. CHAPTER 18: Distributed Algorithms
    1. Types of Parallelism
    2. Distributed Algorithms
    3. Summary
    4. Exercises
  21. CHAPTER 19: Interview Puzzles
    1. Asking Interview Puzzle Questions
    2. Answering Interview Puzzle Questions
    3. Summary
    4. Exercises
  22. 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
  23. 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
  24. Glossary
  25. Index
  26. End User License Agreement

Product information

  • Title: Essential Algorithms, 2nd Edition
  • Author(s): Rod Stephens
  • Release date: May 2019
  • Publisher(s): Wiley
  • ISBN: 9781119575993