The goal of Analysis of Algorithms is to raise awareness of the effect that algorithms have on the efficiency of a program and to develop the necessary skills to analyze general algorithms used in programs. The text presents the material with the expectation that it can be used with active and cooperative learning methodology, based on the premise that students learn more effectively and retain more information longer when they are active participants in the learning process. Developed to offer students multiple opportunities for active and cooperative learning. To accomplish this, the chapters are clear and complete to encourage students to prepare by reading before class, and the text is filled with exciting examples and exercises that look at the efficiency of various algorithms to solve a problem.
The two major goals of this book are to raise awareness of the impact that algorithms can have on the efficiency of a program and to develop the skills necessary to analyze any algorithms that are used in programs. In looking at many commercial products today, it appears that some software designers are unconcerned about space and time efficiency. If a program takes too much space, they expect that the user will buy more memory. If a program takes too long, they expect that the user will buy a faster computer.
There are limits, however, on how fast computers can ever become because there are limits on how fast electrons can travel down "wires," how fast light can travel along fiber optic cables, and how fast the circuits that do the calculations can switch. There are other limits on computation that go beyond the speed of the computer and are directly related to the complexity of the problems being solved. There are some problems for which the fastest algorithm known will not complete execution in our lifetime. Since these are important problems, algorithms are needed that provide approximate answers.