- Preface
- Notation
- Part I: Foundations
- 1. Introduction to Algorithms
- 2. Analyzing Algorithms
- 3. Recursion and Divide-and-Conquer
- Part II: Sorting and Selection
- 4. Elementary Sorting
- 5. Efficient Sorting
- 6. Linear-Time Sorting and Selection
- Part III: Data Structures
- 7. Arrays, Linked Lists, Stacks, and Queues
- 8. Hash Tables
- 9. Trees and Binary Search Trees
- 10. Balanced Search Trees
- 11. Heaps and Priority Queues
- Part IV: Graph Algorithms
- 12. Graphs and Graph Traversal
- 13. Shortest Paths
- 14. Minimum Spanning Trees
- 15. Network Flow
- Part V: Algorithm Design Techniques
- 16. Dynamic Programming
- 17. Greedy Algorithms
- Part VI: Advanced Topics
- 18. Disjoint Sets
- 19. Tries and String Data Structures
- 20. String Matching
- 21. Complexity Classes and NP-Completeness
- 22. Approximation Algorithms
- Bibliography