Introduction to Algorithms

TODO: add authors

The leading introductory textbook and reference on algorithms.

This book looks extremely complete and big. So I decided to split it into 8 parts. Each part is chapter from book.

Contents /6

Preface /14

I Foundations /23

1 The Role of Algorithms in Computing /26

2 Getting Started /37

3 Growth of Functions /64

4 Divide-and-Conquer /86

5 Probabilistic Analysis and Randomized Algorithms /135

II Sorting and Order Statistics /167

6 Heapsort /172

7 Quicksort /191

8 Sorting in Linear Time /212

9 Medians and Order Statistics /234

III Data Structures /249

10 Elementary Data Structures /253

11 Hash Tables /274

12 Binary Search Trees /307

13 Red-Black Trees /329

14 Augmenting Data Structures /360

IV Advanced Design and Analysis Techniques /377

15 Dynamic Programming /380

16 Greedy Algorithms /435

17 Amortized Analysis /472

V Advanced Data Structures /501

18 B-Trees /505

19 Fibonacci Heaps /526

20 van Emde Boas Trees /552

21 Data Structures for Disjoint Sets /582

VI Graph Algorithms /607

22 Elementary Graph Algorithms /610

23 Minimum Spanning Trees /645

24 Single-Source Shortest Paths /664

25 All-Pairs Shortest Paths /705

26 Maximum Flow /729

VII Selected Topics /789

27 Multithreaded Algorithms /793

28 Matrix Operations /834

29 Linear Programming /864

30 Polynomials and the FFT /919

31 Number-Theoretic Algorithms /947

32 String Matching /1006

33 Computational Geometry /1035

34 NP-Completeness /1069

35 Approximation Algorithms /1127

VIII Appendix: Mathematical Background /1163

A Summations /1166

B Sets, Etc. /1179

C Counting and Probability /1204

D Matrices /1238

Bibliography /1252

Index /1272