Foreword

1  The Role of Algorithms in Computing

1.1
Algorithms
1.2
Algorithms as a Technology
Problems

2  Getting Started

2.1
Insertion Sort
2.2
Analyzing Algorithms
2.3
Designing Algorithms
Problems

3  Growth of Functions

3.1
Asymptotic Notation
3.2
Standard Notations and Common Functions
Problems

4  Divide-and-Conquer

4.1
The Maximum Subarray Problem
4.2
Strassen's Algorithm for Matrix Multiplication
4.3
The Substitution Method for Solving Recurrences
4.4
The Recursion-tree Method for Solving Recurrences
4.5
The Master Method for Solving Recurrences
4.6
Proof of the Master Theorem
Problems

A  Summations

A.1
Summation Formulas and Properties
A.2
Bounding Summations
Problems