Absolute Beginner's Guide to Algorithms, 1st edition
Published by Addison-Wesley Professional (November 14, 2023) © 2024
- Kirupa Chinnathambi
- A print text (hardcover or paperback)
- Free shipping
A hands-on, easy-to-comprehend guide that is perfect for anyone who needs to understand algorithms.
With the explosive growth in the amount of data and the diversity of computing applications, efficient algorithms are needed now more than ever. Programming languages come and go, but the core of programming--algorithms and data structures--remains the same.Â
Absolute Beginner's Guide to Algorithmsis the fastest way to learn algorithms and data structures. Using helpful diagrams and fully annotated code samples in Javascript, you will start with the basics and gradually go deeper and broader into all the techniques you need to organize your data. Â
- Start fast with data structures basics: arrays, stacks, queues, trees, heaps, and more
- Walk through popular search, sort, and graph algorithms
- Understand Big-O notation and why some algorithms are fast and why others are slow
- Balance theory with practice by playing with the fully functional JavaScript implementations of all covered data structures and algorithms
Part I: Data Structures
Â
Chapter 1. Introduction to Data Structures .................................................................. 1
    Right Tool for the Right Job .................................................................................... 2
    Back to Data Structures ........................................................................................... 5
    Conclusion ................................................................................................................. 6
Â
Chapter 2. Big-O Notation and Complexity Analysis ................................................... 7
    It's Example Time ...................................................................................................... 8
    It's Big-O Notation Time! .......................................................................................11
    Conclusion ...............................................................................................................15
Â
Chapter 3. Arrays ....................................................................................................... 17
    What Is an Array? ....................................................................................................18
    Array Implementation / Use Cases .......................................................................24
    Arrays and Memory ................................................................................................26
    Performance Considerations .................................................................................30
    Conclusion ...............................................................................................................32
Â
Chapter 4. Linked Lists ............................................................................................... 35
    Meet the Linked List ...............................................................................................36
    Linked List: Time and Space Complexity .............................................................40
    Linked List Variations ..............................................................................................41
    Implementation .......................................................................................................44
    Conclusion ...............................................................................................................52
Â
Chapter 5. Stacks ........................................................................................................ 53
    Meet the Stack ........................................................................................................54
    A JavaScript Implementation ................................................................................56
    Stacks: Time and Space Complexity ....................................................................58
    Conclusion ...............................................................................................................59
Â
Chapter 6. Queues ..................................................................................................... 61
    Meet the Queue .....................................................................................................62
    A JavaScript Implementation ................................................................................64
    Queues: Time and Space Complexity ..................................................................66
    Conclusion ...............................................................................................................67
Â
Chapter 7. Trees ......................................................................................................... 69
    Trees 101 .................................................................................................................70
    Height and Depth ...................................................................................................75
    Conclusion ...............................................................................................................77
Â
Chapter 8. Binary Trees .............................................................................................. 79
    Meet the Binary Tree ..............................................................................................80
    A Simple Binary Tree Implementation ..................................................................86
    Conclusion ...............................................................................................................89
Â
Chapter 9. Binary Search Trees ................................................................................... 91
    It's Just a Data Structure ........................................................................................93
    Implementing a Binary Search Tree ....................................................................103
    Performance and Memory Characteristics .........................................................110
    Conclusion .............................................................................................................112
Â
Chapter 10. Heaps ...................................................................................................... 113
    Meet the Heap ......................................................................................................114
    Heap Implementation ..........................................................................................126
    Performance Characteristics ................................................................................132
    Conclusion .............................................................................................................134
Â
Chapter 11. Hashtable (aka Hashmap or Dictionary) .................................................. 137
    A Very Efficient Robot ..........................................................................................138
    From Robots to Hashing Functions ....................................................................142
    From Hashing Functions to Hashtables .............................................................145
    JavaScript Implementation/Usage ......................................................................148
    Dealing with Collisions .........................................................................................150
    Performance and Memory ...................................................................................151
    Conclusion .............................................................................................................153
Â
Chapter 12. Trie (aka Prefix Tree) ............................................................................... 155
    What Is a Trie? ......................................................................................................156
    Diving Deeper into Tries ......................................................................................167
    Many More Examples Abound! ..........................................................................172
    Implementation Time ...........................................................................................173
    Performance ..........................................................................................................179
    Conclusion .............................................................................................................181
Â
Chapter 13. Graphs .................................................................................................... 183
    What Is a Graph? ..................................................................................................184
    Graph Implementation .........................................................................................190
    Conclusion .............................................................................................................196
Â
Part II: Algorithms
Â
Chapter 14. Introduction to Recursion ....................................................................... 199
    Our Giant Cookie Problem ..................................................................................200
    Recursion in Programming ..................................................................................202
    Conclusion .............................................................................................................206
Â
Chapter 15. Fibonacci and Going Beyond Recursion ................................................. 207
    Recursively Solving the Fibonacci Sequence ....................................................209
    Recursion with Memoization ...............................................................................213
    Taking an Iteration-Based Approach ..................................................................215
    Going Deeper on the Speed ..............................................................................217
    Conclusion .............................................................................................................218
Â
Chapter 16. Towers of Hanoi ...................................................................................... 221
    How Towers of Hanoi Is Played ..........................................................................222
    The Single Disk Case ...........................................................................................223
    It's Two Disk Time .................................................................................................224
    Three Disks ............................................................................................................225
    The Algorithm .......................................................................................................228
    The Code Solution ...............................................................................................229
    Check Out the Recursiveness! ............................................................................231
    It's Math Time ........................................................................................................232
    Conclusion .............................................................................................................234
Â
Chapter 17. Search Algorithms and Linear Search ..................................................... 235
    Linear Search .........................................................................................................236
    Conclusion .............................................................................................................241
Â
Chapter 18. Faster Searching with Binary Search ....................................................... 243
    Binary Search in Action ........................................................................................243
    The JavaScript Implementation ..........................................................................250
    Runtime Performance ...........................................................................................254
    Conclusion .............................................................................................................257
Â
Chapter 19. Binary Tree Traversal ............................................................................... 259
    Breadth-First Traversal ..........................................................................................260
    Depth-First Traversal ............................................................................................265
    Implementing Our Traversal Approaches ..........................................................270
    Performance of Our Traversal Approaches ........................................................278
    Conclusion .............................................................................................................279
Â
Chapter 20. Depth-First Search (DFS) and Breadth-First Search (BFS) ....................... 281
    A Tale of Two Exploration Approaches ..............................................................282
    It's Example Time ..................................................................................................285
    When to Use DFS? When to Use BFS? ..............................................................298
    A JavaScript Implementation ..............................................................................300
    Performance Details .............................................................................................307
    Conclusion .............................................................................................................308
Â
Chapter 21. Quicksort ................................................................................................ 309
    A Look at How Quicksort Works .........................................................................310
    Another Simple Look ...........................................................................................314
    It's Implementation Time .....................................................................................319
    Performance Characteristics ................................................................................322
    Conclusion .............................................................................................................323
Â
Chapter 22. Bubblesort .............................................................................................. 325
    How Bubblesort Works ........................................................................................326
    Walkthrough ..........................................................................................................329
    The Code ...............................................................................................................333
    Conclusion .............................................................................................................333
Â
Chapter 23. Insertion Sort .......................................................................................... 335
    How Insertion Sort Works ....................................................................................336
    One More Example ..............................................................................................347
    Algorithm Overview and Implementation .........................................................349
    Performance Analysis ...........................................................................................351
    Conclusion .............................................................................................................353
Â
Chapter 24. Selection Sort ......................................................................................... 355
    Selection Sort Walkthrough .................................................................................356
    Algorithm Deep Dive ...........................................................................................364
    The JavaScript Implementation ..........................................................................366
    Conclusion .............................................................................................................369
Â
Chapter 25. Mergesort ............................................................................................... 371
    How Mergesort Works .........................................................................................372
    Mergesort: The Algorithm Details ......................................................................379
    Looking at the Code ............................................................................................380
    Conclusion .............................................................................................................381
Â
Conclusion .................................................................................................................383
Â
Index ............................................................................................................................ 387
Kirupa Chinnathambi has spent most of his life teaching others to love web development as much as he does. He founded KIRUPA, one of the Web's most popular free web development education resources, serving 210,000+ registered members. Now a product manager at Google, he has authored several books, including Learning React (2017). He holds a B.S. in computer science from MIT.
Need help? Get in touch