As you may have guessed, this book talks quite a bit about data structures and algorithms. More specifically, the book is laid out as follows:
In Chapter 1, and Chapter 2, , I explain what data structures and algorithms are and explore the concept of time complexity—which is used to determine how fast an algorithm is. In the process, I also talk a great deal about arrays, sets, and binary search.
In Chapter 3, , I unveil Big O notation and explain it in terms that are easy to understand. We use this notation throughout the book, so this chapter is pretty important.
In Chapter 4, , Chapter 5, , and Chapter 6, , we delve further into Big O notation and use it to make our day-to-day code faster. Along the way, I cover various sorting algorithms, including Bubble Sort, Selection Sort, and Insertion Sort.
In Chapter 7, , you apply all that you learned about Big O notation and analyze the efficiency of code from the real world.
In Chapter 8, and Chapter 9, , I discuss a few additional data structures, including hash tables, stacks, and queues. I show how they impact the speed and elegance of our code and how we can use them to solve real-world problems.
Chapter 10, introduces recursion, an anchor concept in the world of computer science. We break it down in this chapter and see how it can be a great tool for certain situations. Chapter 11, teaches you how to write recursive code, which can be confusing if you’re not familiar with it.
Chapter 12, shows you how to optimize recursive code and prevent it from spiraling out of control. And Chapter 13, shows you how to use recursion as the foundation for turbo-fast algorithms like Quicksort and Quickselect, and then it takes your algorithm-development skills up a few notches.
The following chapters, Chapter 14, , Chapter 15, , Chapter 16, , Chapter 17, , and Chapter 18, , explore node-based data structures including the linked list, the binary tree, the heap, the trie, and the graph and show how each is ideal for various applications.
Chapter 19, explores space complexity, which is important when programming for devices with relatively small amounts of disk space or when dealing with big data.
The final chapter, Chapter 20, , walks you through various practical techniques for optimizing the efficiency of code and gives you new ideas for improving the code you write every day.