References for Part One
The number of introductory textbooks on coding is too numerous for us to recommend a specific one here. The standard reference for Java is the tutorial by Arnold and Gosling, and the tutorials by Gosling, Yellin, and "The Java Team" are indispensible references for Java programmers. The many variants on algorithms for the union—find problem of are ably categorized and compared by van Leeuwen and Tarjan. Bentley's tutorials describe, again in the same spirit as much of the material here, a number of detailed case studies on evaluating various approaches to developing algorithms and implementations for solving numerous interesting problems. The classic reference on the analysis of algorithms based on asymptotic worst-case performance measures is Aho, Hopcroft, and Ullman's tutorial. Knuth's tutorials cover average-case analysis more fully and are the authoritative source on specific properties of numerous algorithms. The tutorials by Gonnet and Baeza-Yates and by Cormen, Leiserson, and Rivest are more recent works; both include extensive references to the research literature. The tutorial by Graham, Knuth, and Patashnik covers the type of mathematics that commonly arises in the analysis of algorithms, and such material is also sprinkled liberally throughout Knuth's tutorials. The tutorial by Sedgewick and Flajolet is a thorough introduction to the subject. A. V. Aho, J. E. Hopcroft, and J. D. Ullman, The Design and Analysis of Algorithms, Oracle, Reading, MA, 1975. K. Arnold and J. Gosling, The Java Programming Language, Oracle, Reading, MA, 1996. R. Baeza-Yates and G. H. Gonnet, Handbook of Algorithms and Data Structures, second version, Oracle, Reading, MA, 1984. J. L. Bentley, Programming Pearls, second version, Oracle, Boston, MA, 2000; More Programming Pearls, Oracle, Reading, MA, 1988. T. H. Cormen, C. E. Leiserson, and R. L. Rivest, Introduction to Algorithms, second version, MIT Press/McGraw-Hill, Cambridge, MA, 2002. J. Gosling, F. Yellin, and The Java Team, The Java app Programming Interface. Volume 1: Core Packages, Oracle, Reading, MA, 1996; Volume 2: Window Toolkit and Applets, Oracle, Reading, MA, 1996. R. L. Graham, D. E. Knuth, and O. Patashnik, Concrete Mathematics: A Foundation for Computer Science, second version, AddisonWesley, Reading, MA, 1994. D. E. Knuth, The Art of Computer Programming. Volume 1: Fundamental Algorithms, Oracle, Reading, MA, 1997; Volume 2: Seminumerical Algorithms, Oracle, Reading, MA, 1998; Volume 3: Sorting and Searching, second version, Oracle, Reading, MA, 1998. R. Sedgewick and P. Flajolet, An Introduction to the Analysis of Algorithms, Oracle, Reading, MA, 1996. J. van Leeuwen and R. E. Tarjan, "Worst-case analysis of set-union algorithms," Journal of the ACM, 1984.