Introduction To AlgorithmsThe first edition won the award for Best 1990 Professional and Scholarly Book in Computer Science and Data Processing by the Association of American Publishers. There are books on algorithms that are rigorous but incomplete and others that cover masses of material but lack rigor. Introduction to Algorithms 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 selfcontained 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 the standard reference for professionals and a widely used text in universities worldwide. The second edition features new chapters on the role of algorithms, probabilistic analysis and randomized algorithms, and linear programming, as well as extensive revisions to virtually every section of the book. In a subtle but important change, loop invariants are introduced early and used throughout the text to prove algorithm correctness. Without changing the mathematical and analytic focus, the authors have moved much of the mathematical foundations material from Part I to an appendix and have included additional motivational material at the beginning. 
What people are saying  Write a review
User ratings
5 stars 
 
4 stars 
 
3 stars 
 
2 stars 
 
1 star 

LibraryThing Review
User Review  IvanIdris  LibraryThingThis book is like an encyclopedia of algorithms. The algorithms are presented with pseudo code so it doesn’t matter what your favorite programming language is. A very rigorous mathematical approach is used for the analysis of for instance performance. Read full review
User Review  Flag as inappropriate
All 10 reviews »It is a fantastic book for those, who want to learn algorithms from scratch. This book consist a good explanation of all data structures which are fundamental and are also very important to understand to get a fruitful idea about algorithms.
Contents
Introduction  3 
Getting Started 75  15 
Growth of Functions  41 
Recurrences  62 
Probabilistic Analysis and Randomized Algorithms  91 
Introduction 797  197 
Hash Tables  221 
Augmenting Data Structures  302 
Minimum Spanning Trees  561 
SingleSource Shortest Paths  580 
Maximum Flow  643 
Introduction  701 
Matrix Operations  725 
Linear Programming  770 
Polynomials and the FFT 522  822 
NumberTheoretic Algorithms  849 
Introduction  321 
Greedy Algorithms  370 
Introduction  431 
Binomial Heaps  455 
Fibonacci Heaps  476 
Data Structures for Disjoint Sets  498 
Introduction  525 
NPCompleteness  966 
Introduction 7057  1057 
B Sets Etc 7070  1070 
Counting and Probability  1094 
1127  
1145  
Other editions  View all
Introduction to Algorithms (Instructor's Manual) Thomas H. Cormen,Charles E. Leiserson,Ronald L. Rivest,Clifford Stein No preview available  2014 
Introduction to Algorithms and Java CDROM Thomas Cormen,Charles Leiserson,Ronald Rivest,Clifford Stein No preview available  2003 
Introduction to Algorithms and Java CDROM Thomas Cormen,Charles Leiserson,Ronald Rivest,Clifford Stein No preview available  2003 
Common terms and phrases
amortized cost analysis array assume asymptotic Btree binary search tree binomial heap bitonic Chapter compute constant constraints contains Corollary data structure define deletion denote depthfirst search determine directed graph edge element equation example Exercise feasible solution Fibonacci heap Figure flow network given graph G greedy hash function hash table implement input insertion sort integer iteration Lemma linear program linked list loop invariant loop of lines matrix maximum flow merge sort method minimum spanning tree modulo multiplication negativeweight cycle node nonnegative NPcomplete objective value operations optimal solution output partition performed permutation pointer points polynomial polynomialtime problem procedure Proof prove pseudocode queue quicksort random recursive call redblack tree relabel root list Section segments sequence shortest path simplex slack form slot solve sorting network stack subarray subproblems subset subtree Suppose Theorem variables vector vertex vertices weight worstcase running