As far back as I can remember, I always wanted to learn Algorithms and Data Structures.
From my experience, I found that working through chapters and exercises of a well-written textbook works best for me. Taking into consideration my love of Python, I decided to use Data Structures and Algorithms in Python by Michael T. Goodrich for this purpose.
Note: I didn’t solve every exercise or implement every algorithm. But I tried my best to understand the fundamentals, as that was my primary goal for this project.
The book is separated into notebooks. Each notebook represents a book’s chapter which contains:
- A small description of what was discussed in the chapter.
- Implementation of Algorithms and Data Structures which I deemed most important, from scratch. Some of them are very similar to the ones in the book, but with several simplifications. Others are based just on the simple description provided in the book.
- Solutions for Reinforcement, Creativity, and Project sections. These are the exercises at the end of each book’s chapter. A full description of solved tasks is provided.
The only missing chapters are the 3rd and the 15th ones. The 3rd chapter is on proofs of time complexity, and writing it in the LaTex in the notebook would take me ages. In the 15th chapter, I honestly didn’t find any interesting exercises or algorithms.
Most importantly, here is the exact implementation of all algorithms/data structures in the book, provided by the author. There were also several attempts similar to mine. First, I strongly recommend this repository for a high quality of visualization and explanation. The author also includes a summary of the content of each chapter, which is cool. Second, in this repository you can find complete solutions to ALL exercise of the first several chapters, something nobody has done. The code and explanation are of high quality, too.
- Python Primer
- Object-Oriented Programming
- Algorithm Analysis
- Recursion
- Array-Based Sequences
- Stacks, Queues, and Deques
- Linked Lists
- Trees
- Priority Queues
- Maps, Hash Tables, and Skip Lists
- Search Trees
- Sorting and Selection
- Text Processing
- Graph Algorithms
- Memory Management and B-Trees