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 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