Introduction to Algorithms, 3e

by Cormen, Leiserson, Rivest, Stein

ISBN: 9780262259460 | Copyright 2009

Click here to preview


Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.

The first edition became a widely used text in universities worldwide as well as the standard reference for professionals. The second edition featured new chapters on the role of algorithms, probabilistic analysis and randomized algorithms, and linear programming. The third edition has been revised and updated throughout. It includes two completely new chapters, on van Emde Boas trees and multithreaded algorithms, substantial additions to the chapter on recurrence (now called “Divide-and-Conquer”), and an appendix on matrices. It features improved treatment of dynamic programming and greedy algorithms and a new notion of edge-based flow in the material on flow networks. Many new exercises and problems have been added for this edition. As of the third edition, this textbook is published exclusively by the MIT Press.

As an educator and researcher in the field of algorithms for over two decades, I can unequivocally say that the Cormen et al book is the best textbook that I have ever seen on this subject. It offers an incisive, encyclopedic, and modern treatment of algorithms, and our department will continue to use it for teaching at both the graduate and undergraduate levels, as well as a reliable research reference.

Gabriel Robins Department of Computer Science, University of Virginia

Introduction to Algorithms, the ‘bible’ of the field, is a comprehensive textbook covering the full spectrum of modern algorithms: from the fastest algorithms and data structures to polynomial-time algorithms for seemingly intractable problems, from classical algorithms in graph theory to special algorithms for string matching, computational geometry, and number theory. The revised third edition notably adds a chapter on van Emde Boas trees, one of the most useful data structures, and on multithreaded algorithms, a topic of increasing importance.

Daniel Spielman Department of Computer Science, Yale University
Expand/Collapse All
Contents (pg. v)
Preface (pg. xiii)
I - Foundations (pg. 2)
Introduction (pg. 3)
1: The Role of Algorithms in Computing (pg. 5)
2: Getting Started (pg. 16)
3: Growth of Functions (pg. 43)
4: Divide-and-Conquer (pg. 65)
5: Probabilistic Analysis and Randomized Algorithms (pg. 114)
II - Sorting and Order Statistics (pg. 146)
Introduction (pg. 147)
6: Heapsort (pg. 151)
7: Quicksort (pg. 170)
8: Sorting in Linear Time (pg. 191)
9: Medians and Order Statistics (pg. 213)
III - Data Structures (pg. 228)
Introduction: Introduction (pg. 229)
10: Elementary Data Structures (pg. 232)
11: Hash Tables (pg. 253)
12: Binary Search Trees (pg. 286)
13: Red-Black Trees (pg. 308)
14: Augmenting Data Structures (pg. 339)
IV - Advanced Design and Analysis Techniques (pg. 356)
Introduction (pg. 357)
15: Dynamic Programming (pg. 359)
16: Greedy Algorithms (pg. 414)
17: Amortized Analysis (pg. 451)
V - Advanced Data Structures (pg. 480)
Introduction (pg. 481)
18: B-Trees (pg. 484)
19: Fibonacci Heaps (pg. 505)
20: van Emde Boas Trees (pg. 531)
21: Data Structures for Disjoint Sets (pg. 561)
VI - Graph Algorithms (pg. 586)
Introduction (pg. 587)
22: Elementary Graph Algorithms (pg. 589)
23: Minimum Spanning Trees (pg. 624)
24: Single-Source Shortest Paths (pg. 643)
25: All-Pairs Shortest Paths (pg. 684)
26: Maximum Flow (pg. 708)
VII - Selected Topics (pg. 768)
Introduction (pg. 769)
27: Multithreaded Algorithms (pg. 772)
28: Matrix Operations (pg. 813)
29: Linear Programming (pg. 843)
30: Polynomials and the FFT (pg. 898)
31: Number-Theoretic Algorithms (pg. 926)
32: String Matching (pg. 985)
33: Computational Geometry (pg. 1014)
34: NP-Completeness (pg. 1048)
35: Approximation Algorithms (pg. 1106)
Appendix III - Appendix: Mathematical Background (pg. 1142)
Introduction (pg. 1143)
A: Summations (pg. 1145)
B: Sets, Etc. (pg. 1158)
C: Counting and Probability (pg. 1183)
D: Matrices (pg. 1217)
Bibliography (pg. 1231)
Index (pg. 1251)

Thomas H. Cormen

Thomas H. Cormen is Professor of Computer Science and former Director of the Institute for Writing and Rhetoric at Dartmouth College. He is the coauthor (with Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein) of the leading textbook on computer algorithms, Introduction to Algorithms (third edition, MIT Press, 2009).

Charles E. Leiserson

Charles E. Leiserson is Professor of Computer Science and Engineering at the Massachusetts Institute of Technology.

Ronald L. Rivest

Ronald L. Rivest is Andrew and Erna Viterbi Professor of Electrical Engineering and Computer Science at the Massachusetts Institute of Technology.

Clifford Stein

Clifford Stein is Professor of Industrial Engineering and Operations Research at Columbia University.

You must have an instructor account and submit a request to access instructor materials for this book.
Go paperless today! Available online anytime, nothing to download or install.
Device Compatibility


  • Bookmarking
  • Note taking
  • Highlighting
Course Access only

Do you have a Course ID from your instructor?

Are you enrolling in an instructor-led course? Enter the Course ID from your instructor.
Prices can vary
Click Enroll Now to proceed
Enroll Now