An study repository where I save all the examples and exercises I while reading the the book "Grokking Algorithms" by Aditya Y. Bhargava.
- Chapter 1 - Introduction to Algorithms
- Binary Search (Python and C++)
- Chapter 2 - Selection Sort
- Arrays vs Linked Lists
- Selection Sort Algorithm (Python and C++)
-
Chapter 3 - Recursion
-
Chapter 4 - Quicksort
-
Chapter 5 - Hash Tables
-
Chapter 6 - Breadth-first Search
- Chapter 7 - Dijkstra's algorithm
-
Chapter 8 - Greedy algorithms
-
Chapter 9 - Dynamic programming
- Dynamic programming is useful when you’re trying to optimize something given a constraint.
- You can use dynamic programming when the problem can be separated in discrete sub-problems which don't depend on each other.
-
Chapter 10 - K-nearest neighbors
-
Chapter 11 - Where to go next
- binary search tree data structure
- Inverted indexes
- The Fourier transform IMPORTANT TO READ!
- Parallel algorithms
- MapReduce
- Bloom filters and HyperLogLog
- The SHA algorithms
- Locality-sensitive hashing
- Diffie-Hellman key exchange
- Linear programming