
Aho, Alfred V., John E. Hopcroft, and Jeffrey D. Ullman. The Design and Analysis of Computer Algorithms. AddisonWesley, 1974. The classic text, but it lacks topics in network flows and linear programming, as well as more recent algorithms.

Aho, Alfred V., John E. Hopcroft, and Jeffrey D. Ullman. Data Structures and Algorithms. AddisonWesley, 1983. Revised and more elementary version of the first six chapters of The Design and Analysis of Computer Algorithms.

Baase, Sara. Computer Algorithms: Introduction to Design and Analysis. 2nd ed. AddisonWesley, 1988. General reference, although the exposition is sometimes terse or sketchy.

Bentley, Jon. Programming Pearls. AddisonWesley, 1986. Applications of algorithm design techniques to software engineering.

Bentley, Jon. More Programming Pearls. AddisonWesley, 1988. More applications of algorithm design techniques to software engineering.

Bentley, Jon Louis. Writing Efficient Programs. PrenticeHall, 1982. Performance hacking extraordinaire.

Brassard, Gilles and Paul Bratley. Algorithmics: Theory and Practice. PrenticeHall, 1988. Good examples and problems. Focus on methods rather than specific problems.

Chung, Kai Lai. Elementary Probability Theory with Stochastic Processes. SpringerVerlag, 1974. Intuitive introduction to probability.

Even, Shimon. Graph Algorithms. Computer Science Press, 1979. Broad treatment of graph algorithms, including network flow and planarity.

Feller, William. An Introduction to Probability Theory and Its Applications. John Wiley & Sons, Vol 1. 1968, Vol 2. 1971. Excellent reference for probability theory.

Garey, Michael R. and David S. Johnson. Computers and Intractibility: A Guide to the Theory of NPCompleteness. San Francisco: W. H. Freeman & Co., 1979. Reference book devoted to NPcompleteness. The second half contains an extensive list of NPcomplete problems and references to algorithms in the literature for polynomialtime special cases.

Gonnet, G. H. Handbook of Algorithms and Data Structures. AddisonWesley, 1984. Code in Pascal and C, comparisons of actual running times, and pointers to analysis in research papers.

Gusfield, Dan. Algorithms on Strings, Trees, and Sequences. Cambridge University Press, 1997. General treatment of algorithms that operate on character strings and sequences.

Horowitz, Ellis and Sartaj Sahni. Fundamentals of Computer Algorithms. Computer Science Press, 1978. Good on data structures, dynamic programming, and branchandbound algorithms.

Kingston, Jeffrey H. Algorithms and Data Structures: Design, Correctness, Analysis. AddisonWesley Publishing Co., 1991. A nice introductory book on data structures, with a good chapter on algorithm correctness.

Knuth, Donald E. The Art of Computer Programming. AddisonWesley. Encyclopedic work in three volumes: (1) Fundamental Algorithms, (2) Seminumerical Algorithms, and (3) Sorting and Searching.

Lawler, Eugene L. Combinatorial Optimization. Holt, Rinehart, and Winston, 1976. Graph algorithms (dense graphs), network flows, and linear programming. First few chapters are excellent.

Liu, C. L. Introduction to Combinatorial Mathematics. McGrawHill, 1968. Combinatorial mathematics relevant to computer science. Excellent problems.

Manber, Udi. Introduction to Algorithms. AddisonWesley, 1989. Elementary text with an emphasis on creativity.

Mehlhorn, Kurt. Data Structures and Algorithms. SpringerVerlag, 1984. Three volumes: (1) Sorting and Searching, (2) Graph Algorithms and NPCompleteness, and (3) Multidimensional Searching and Computational Geometry. Lecture notes on basic and advanced topics.

Niven, Ivan and Herbert S. Zuckerman. An Introduction to the Theory of Numbers. John Wiley & Sons, 1980. Readable introduction to number theory.

Papadimitriou, Christos H. and Kenneth Steiglitz. Combinatorial Optimization: Algorithms and Complexity. PrenticeHall, 1982. Linear programming and its variants.

Press, William P., Brian P. Flannery, Saul A. Teukolsky, and William T. Vetterling. Numerical Recipies in C: The Art of Scientific Computing. Cambridge: Cambridge University Press, 1988. Code for numerical algorithms.

Reingold, E. M., J. Nievergelt, and N. Deo. Combinatorial Algorithms: Theory and Practice. PrenticeHall, 1977. Good on recurrence relations and binary search trees.

Sedgewick, Robert . Algorithms. 2nd ed. AddisonWesley, 1988. Elementary text with an excellent breadth of topics. Light on analysis, but lots of figures.

Sipser, Michael. Introduction to the Theory of Computation. PWS Publishing Co., 1997. A good text on computability and complexity theory.

Tarjan, Robert Endre. Data Structures and Network Algorithms. Society for Industrial and Applied Mathematics, 1983. Advanced book with tons of good stuff.