he objective of this book is to study a broad variety of important and useful
algorithms—methods for solving problems that are suited for computer implementation.
Algorithms go hand in hand with data structures—schemes for organizing
data that leave them amenable to effi cient processing by an algorithm. This
chapter introduces the basic tools that we need to study algorithms and data structures.
First, we introduce our basic programming model. All of our programs are implemented
using a small subset of the Java programming language plus a few of our own
libraries for input/output and for statistical calculations. Section 1.1 is