The Algorithm Design Manual - Steven S. Skiena
Chapter 1 - Introduction to Algorithm Design
Logarithms
Chapter 2 - Algorithm Analysis
Chapter 3 - Data Structures
Chapter 4 - Sorting
Chapter 5 - Divide and Conquer
Chapter 6 - Hashing and Randomized Access
Chapter 7 - Graph Traversal
Chapter 8 - Weighted Graph Algorithms
Chapter 9 - Combinatorial Search
Chapter 10 - Dynamic Programming
Chapter 11 - NP-Completeness
Chapter 12 - Dealing with Hard Problems
Chapter 13 - How to Design Algorithms
Chapter 14 - A Catalogue of Algorithmic Problems
Chapter 15 - Data Structures
Chapter 16 - Numerical Problems
Chapter 17 - Combinatorial Problems
Chapter 18 - Graph Problems: NP-Hard
Chapter 19 - Computational Geometry
Chapter 20 - Set and String Problem
Chapter 21 - Algorithmic Resources