Introduction to Algorithms, Third Edition By Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein

Table of Contents

I Foundations

1 The Role of Algorithms in Computing 5
2 Getting Started 16
3 Growth of Functions 43
4 Divide-and-Conquer 65
5 Probabilistic Analysis and Randomized Algorithms 114

II Sorting and Order Statistics

6 Heapsort 151
7 Quicksort 170
8 Sorting in Linear Time 191
9 Medians and Order Statistics 213

III Data Structures

10 Elementary Data Structures 232
11 Hash Tables 253
12 Binary Search Trees 286
13 Red-Black Trees 308
14 Augmenting Data Structures 339

IV Advanced Design and Analysis Techniques

15 Dynamic Programming 359
16 Greedy Algorithms 414
17 Amortized Analysis 451

V Advanced Data Structures

18 B-Trees 484
19 Fibonacci Heaps 505
20 van Emde Boas Trees 531
21 Data Structures for Disjoint Sets 561

VI Graph Algorithms

22 Elementary Graph Algorithms 589
23 Minimum Spanning Trees 624
24 Single-Source Shortest Paths 643
25 All-Pairs Shortest Paths 684
26 Maximum Flow 708

VII Selected Topics

27 Multithreaded Algorithms
28 Matrix Operations 813
29 Linear Programming 843
30 Polynomials and the FFT 898
31 Number-Theoretic Algorithms 926
32 String Matching 985
33 Computational Geometry 1014
34 NP-Completeness 1048
35 Approximation Algorithms 1106