This edition features an increased emphasis on algorithm design techniques such as divide-and-conquer and greedy algorithms, along with the addition of new topics and exercises. It continues the tradition of solid mathematical analysis and clear writing style: emphasizes the development of algorithms through a step-by-step process rather than by merely presenting the end result; stresses the importance of the algorithm analysis process - continuously re-evaluating, modifying, and perhaps rejecting algorithms until a satisfactory solution is attained; provides extensive treatment of recursion with a clear, student-friendly review of how it works and why it is a valuable programming technique; uses a Java-like pseudocode; and includes an appendix with java examples.
1 Analyzing Algorithms and Problems: Principles and Examples
2 Data Abstraction and Basic Data Structures
3 Recursion and Induction
4 Sorting
5 Selection and Adversary Arguments
6 Dynamic Sets and Searching
7 Graphs and Graph Traversals
8 Graph Optimization Problems and Greedy Algorithms
9 Transitive Closure, All-Pairs Shortest Paths
10 Dynamic Programming
11 String Matching
12 Polynomials and Matrices
13 NP-Complete Problems
14 Parallel Algorithms
A Java Examples and Techniques
Bibliography
Index