Table of Contents 
 Introduction to Algorithms, Second Edition

 Preface

 Part I 
Foundations 
 Chapter 1   
The Role of Algorithms in Computing 
 Chapter 2   
Getting Started 
 Chapter 3   
Growth of Functions 
 Chapter 4   
Recurrences 
 Chapter 5   
Probabilistic Analysis and Randomized Algorithms 
 Part II 
Sorting and Order Statistics 
 Chapter 6   
Heapsort 
 Chapter 7   
Quicksort 
 Chapter 8   
Sorting in Linear Time 
 Chapter 9   
Medians and Order Statistics 
 Part III 
Data Structures 
 Chapter 10   
Elementary Data Structures 
 Chapter 11   
Hash Tables 
 Chapter 12   
Binary Search Trees 
 Chapter 13   
RedBlack Trees 
 Chapter 14   
Augmenting Data Structures 
 Part IV 
Advanced Design and Analysis Techniques 
 Chapter 15   
Dynamic Programming 
 Chapter 16   
Greedy Algorithms 
 Chapter 17   
Amortized Analysis 
 Part V 
Advanced Data Structures 
 Chapter 18   
BTrees 
 Chapter 19   
Binomial Heaps 
 Chapter 20   
Fibonacci Heaps 
 Chapter 21   
Data Structures for Disjoint Sets 
 Part VI 
Graph Algorithms 
 Chapter 22   
Elementary Graph Algorithms 
 Chapter 23   
Minimum Spanning Trees 
 Chapter 24   
SingleSource Shortest Paths 
 Chapter 25   
AllPairs Shortest Paths 
 Chapter 26   
Maximum Flow 
 Part VII 
Selected Topics 
 Chapter 27   
Sorting Networks 
 Chapter 28   
Matrix Operations 
 Chapter 29   
Linear Programming 
 Chapter 30   
Polynomials and the FFT 
 Chapter 31   
NumberTheoretic Algorithms 
 Chapter 32   
String Matching 
 Chapter 33   
Computational Geometry 
 Chapter 34   
NPCompleteness 
 Chapter 35   
Approximation Algorithms 
 Part VIII 
Appendix: Mathematical Background 
 Appendix A   
Summations 
 Appendix B   
Sets, Etc. 
 Appendix C   
Counting and Probability 
 Bibliography

 Index

 List of Figures

 List of Corollaries

 List of Problems

 List of Exercises
