Algorithms in C

, by
Algorithms in C by Sedgewick, Robert, 9780201514254
Note: Supplemental materials are not guaranteed with Rental or Used book purchases.
  • ISBN: 9780201514254 | 0201514257
  • Cover: Paperback
  • Copyright: 1/1/1990

  • Buy New

    Currently Available, Usually Ships in 24-48 Hours

    $64.02

This book is intended to survey the most important computeralgorithms in use today and to teach fundamental techniques tothe growing number of people in need of knowing them. It can beused as a textbook for a second, third, for fourth course incomputer science, after students have acquired some programmingskills and familiarity with computer systems, but before theyhave taken specialized courses in advanced areas of computerscience or computer applications. Additionally, the book may beuseful for self-study or as a reference for those engaged in thedevelopment of computer systems or applications programs, sinceit contains a number of implementations of useful algorithms anddetailed information on their performance characteristics. Thebroad perspective taken in the book makes it an appropriateintroduction to the field.

SCOPE

The book contains 45 chapters grouped into 8 major parts: fundamentals, sorting, searching, string processing, geometricalgorithms, graph algorithms, mathematical algorithms andadvanced topics. A major goal in developing this book has beento bring together the fundamental methods from these diverseareas, in order to provide access to the best methods known forsolving problems by computer. Some of the chapters giveintroductory treatments of advanced material. It is hoped thatthe descriptions here can give readers some understanding of thebasic properties of fundamental algorithms ranging from priorityqueues and hashing to simplex and the fast Fourier transform.

One or two previous courses in computer science or equivalentprogramming experience are recommended for a reader to be able toappreciate the material in this book: one course in programmingin a high-level language such as C or Pascal, and perhaps anothercourse which teaches fundamental concepts of programming systems. This book is thus intended for anyone conversant with a modernprogramming language and with the basic features of moderncomputer systems. References that might help fill in gaps inone's background are suggested in the text.

Most of the mathematical material supporting the analytic resultsis self contained (or labeled as "beyond the scope" of thisbook), so little specific preparation in mathematics is requiredfor the bulk of the book, though a certain amount ofmathematical maturity is definitely helpful. A number of thelater chapters deal with algorithms related to more advancedmathematical material--these are intended to place the algorithmsin context with other methods throughout the book, not to teachthe mathematical material. Thus the discussion of advancedmathematical concepts is brief, general, and descriptive.

USE IN THE CURRICULUM

There is a great deal of flexibility in how the material here canbe taught. To a large extent, the individual chapters in thebook can be read independently of the others, though in somecases, algorithms in one chapter make use of methods from aprevious chapter. The material can be adapted for use forvarious courses by selecting perhaps 25 or 30 of the 45 chapters,according to the taste of the instructor and the preparation ofthe students.

The book begins with an introductory section on data structuresand the design and analysis of algorithms. This sets the tonefor the rest of the book and provides a framework within whichmore advanced algorithms are treated. Some readers may skip orskim this section; others may learn the basics there.

An elementary course on "data structures and algorithms" mightomit some ofthe mathematical algorithms and some of the advancedtopics, then emphasize how various data structures are used inthe implementations. An intermediate course on "design andanalysis of algorithms" might omit some of the more practicallyoriented sections, then emphasize the identification and study ofthe ways in which algorithms achieve good asymptotic performance. A course on "software tools" might omit the mathematical andalgorithmic material, then emphasize how to integrate theimplementations given here into large programs or systems. Acourse on "algorithms" might take a survey approach and introduceconcepts from all these areas.

Some instructors may wish to add supplementary material to thecourses described above to reflect their particular orientation. For "data structures and algorithms", extra material on basicdata structures could be taught; for "design and analysis ofalgorithms," more mathematical analysis could be added; and for"software tools," software engineering techniques could becovered in more depth. In this book, attention is paid to allthese areas, but the emphasis is on the algorithms themselves.

Earlier versions of this book have been used in recent years atscores of colleges and universities around the country as a textfor the second or third course in computer science and assupplemental reading for other courses. At Princeton, ourexperience has been that the breadth of coverage of material inthis book provides our majors with an introduction to computerscience that can later be expanded upon in later courses onanalysis of algorithms, systems programming and theoreticalcomputer science, while at the same time providing all thestudents with a large set of techniques that they can immediatelyput to good use.

There are 450 exercises, ten following each chapter, thatgenerally divide into two types. Most are intended to teststudents' understanding of material in the text, and ask studentsto work through an example or apply concepts described in thetext. A few of them, however, involve implementing and puttingtogether some of the algorithms, perhaps running empiricalstudies to compare algorithms and to learn their properties.

ALGORITHMS OF PRACTICAL USE

The orientation of the book is toward algorithms likely to be ofpractical use. The emphasis is on teaching students the tools oftheir trade to the point that they can confidently implement, runand debug useful algorithms. Full implementations of the methodsdiscussed are included in the text, along with descriptions ofthe operations of these programs on a consistent set of examples. Indeed, as discussed in the epilog, hundreds of figures areincluded in the book that have been created by the algorithmsthemselves. Many algorithms are brought to light on an intuitivelevel throughout the visual dimension provided by these figures.

Characteristics of the algorithms and situations in which theymight be useful are discussed in detail. Though not emphasized,connections to the analysis of algorithms and theoreticalcomputer science are not ignored. When appropriate, empiricaland analytic results are discussed to illustrate why certainalgorithms are preferred. When interesting, the relationship ofthe practical algorithms being discussed to purely theoreticalresults is described. Specific information on performancecharacteristics of algorithms is encapsulated throughout the"properties," important facts about the algorithms that deservefurther study.

While there is little direct treatment of specific uses of thealgorithms in science and engineering applications, the potentialfor such use is mentioned when appropriate. Our experience hasbeen that when students learn good algorithms in a computerscience context early in their education, they are able to applythem to solve problems when warranted later on.

PROGRAMMING LANGUAGE

The programming language used throughout the book is C (a Pascalversion of the book is also available). Any particular languagehas advantages and disadvantages; we use C because it is widelyavailable and provides the features needed for ourimplementations. The programs can easily be translated to othermodern programming languages, since relatively few C constructsare used. Indeed, many of the programs have been translated fromPascal and oth

Loading Icon

Please wait while the item is added to your bag...
Continue Shopping Button
Checkout Button
Loading Icon
Continue Shopping Button