← back to reading

⚙ Algorithms and Data Structures

Based on Nievergelt & Hinrichs, licensed CC BY-SA.

With applications to graphics and geometry. Translated into runnable Scheme and Python with SVG diagrams.

4 2 6 1 3 5 7 Balanced BST: every query halves the search space.
Chapter
1. Complexity and O-Notation Big-O, big-Omega, big-Theta: how to compare algorithms by their growth rates ⚙
2. Recursion Divide and conquer, recurrence relations, and the master theorem ⚙
3. Sorting Insertion sort, merge sort, quicksort, heapsort, and the n log n lower bound ⚙
4. Searching Binary search, hash tables, and interpolation search ⚙
5. Trees BSTs, AVL trees, B-trees, and the three traversal orders ⚙
6. Graphs BFS, DFS, topological sort, and connected components ⚙
7. Shortest Paths Dijkstra, Bellman-Ford, Floyd-Warshall, and negative cycles ⚙
8. Geometric Algorithms Convex hull, line intersection, closest pair, Voronoi diagrams ⚙
9. Dynamic Programming Optimal substructure and memoization: Fibonacci, knapsack, edit distance ⚙
10. NP-Completeness P vs NP, reductions, and the problems we believe are hard ⚙

📺 Video lectures: MIT 6.006 Introduction to Algorithms

Neighbors