Industrial-Sized Deals TextBTS15 Shop Women's Handbags Learn more nav_sap_plcc_6M_fly_beacon Deradoorian $5 Off Fire TV Stick Subscribe & Save Shop Popular Services pivdl pivdl pivdl  Amazon Echo Starting at $99 Kindle Voyage Nintendo Digital Games Shop Back to School with Amazon Back to School with Amazon Outdoor Recreation STEM Toys & Games
Algorithms in C++ Part 5: Graph Algorithms (3rd Edition) and over one million other books are available for Amazon Kindle. Learn more

Algorithms in C (Computer Science Series) 1st Edition

39 customer reviews
ISBN-13: 978-0201514254
ISBN-10: 0201514257
Why is ISBN important?
This bar-code number lets you verify that you're getting exactly the right version or edition of a book. The 13-digit and 10-digit formats both work.
Scan an ISBN with your phone
Use the Amazon App to scan ISBNs and compare prices.
Have one to sell? Sell on Amazon
Buy used
Condition: Used - Good
Condition: Used: Good
Comment: This item is gently used in good or better condition. If it is a textbook it may not have supplements. It may have some moderate wear and possibly include previous ownerâ€TMs name, some markings and/or is a former library book. We ship within 1 business day and offer no hassle returns. Big Hearted Books shares its profits with schools, churches and non-profit groups throughout New England. Thank you for your support!
Access codes and supplements are not guaranteed with used items.
53 Used from $0.12
More Buying Choices
11 New from $28.05 53 Used from $0.12

InterDesign Brand Store Awareness Textbooks

Editorial Reviews Review

Algorithms in C is a comprehensive repository of algorithms, complete with code. If you're in a pinch and need to code something up fast, this book is the place to look. Starting with basic data structures, Algorithms in C covers an enormous scope of information, with extensive treatment of searching and advanced data structures, sorting, string processing, computational geometry, graph problems, and mathematical algorithms. Although the manual often neglects to provide rigorous analysis, the text surrounding the algorithms provides clear and relevant insight into why the algorithms work.

From the Inside Flap

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.


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.


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.


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.


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 other languages, though we try to use standard Cidioms when appropriate.

Some of the programs can be simplified by using more advancedlanguage features, but this is true less often than one mightthink. Although language features are discussed whenappropriate, this book is not intended to be a reference work onC programming. When forced to make a choice, we concentrate onthe algorithms, not implementation details.

A goal of this book is to present the algorithms in as simple anddirect a form as possible. The programs are intended to be readnot by themselves, but as part of the surrounding text. Thisstyle was chosen as an alternative, for example, to having inlinecomments. the style is consistent whenever possible, so thatprograms that are similar look similar.


Many people gave me helpful feedback on earlier versions of thisbook. In particular, students at Princeton and Brown sufferedthrough preliminary versions of the material in this book in the1980's. Special thanks are due to Trina Avery, Tom Freeman, andJanet Incerpi for their help in producing the fist edition. Iwould particularly like to thank Janet for converting the bookinto TeX format, adding the thousands of changes I made after the"last draft" of the first edition, guiding the files throughvarious systems to produce printed pages and even writing thescan-conversion routine for TeX used to produce draftmanuscripts, among many other things. Only after performing manyof these tasks myself for later versions do I truly appreciateJanet's contribution. I would also like to thank the manyreaders who provided me with detailed comments about the secondedition, including Guy Almes, Jay Gischer, Kennedy Lemke, UdiManber, Dana Richards, John Reif, M. Rosenfeld, Stephen Seidman,and Michael Quinn.

Many of the designs in the figures are based on joint work withMarc Brown in the "electronic classroom" project at BrownUniversity in 1983. Marc's support and assistance in creatingthe designs (not to mention the system with which we worked) aregratefully acknowledged. I also would like to acknowledgeSarantos Kapidakis' help in producing the endpapers.

This C version owes its existence tot he persistent questions ofseveral readers about C code for ALGORITHMS and to the support ofKeith Wollman at Addison-Wesley, who convinced me to proceed. Dave Hanson's willingness to answer questions about ANSI C wasinvaluable. I also would like to thank Darcy Cotten and SkipPlank for their help in producing the book, and Steve Beck forfinding the "last bug" in the printing software.

Much of what I've written here I've learned from the teaching andwritings of Don Knuth, my advisor at Stanford. Though Don had nodirect influence on this work, his presence may be felt in thebook, for it was he who put the study of algorithms on ascientific footing that makes a work such as this possible.

I am very thankful for the support of Brown University and INRIAwhere I did most of the work on the book, and the Institute forDefense Analyses and the Xerox Palo Alto Research Center, where Idid some work on the book while visiting. Many parts of book aredependent on research that has been generously supported by theNational Science Foundation and the Office of Naval Research. Finally, I would like to thank Bill Bowen, Aaron Lemonick, andNeil Rudenstine at Princeton University for their support inbuilding an academic environment in which I was able to preparethis book, despite numerous other responsibilities. 0201514257P04062001

See all Editorial Reviews

Best Books of the Month
Best Books of the Month
Want to know our Editors' picks for the best books of the month? Browse Best Books of the Month, featuring our favorite new books in more than a dozen categories.

Product Details

  • Hardcover: 657 pages
  • Publisher: Addison-Wesley Professional; 1 edition (January 1, 1990)
  • Language: English
  • ISBN-10: 0201514257
  • ISBN-13: 978-0201514254
  • Product Dimensions: 6.3 x 1.2 x 9.5 inches
  • Shipping Weight: 1.6 pounds
  • Average Customer Review: 3.7 out of 5 stars  See all reviews (39 customer reviews)
  • Amazon Best Sellers Rank: #756,666 in Books (See Top 100 in Books)

More About the Author

Discover books, learn about writers, read author blogs, and more.

Customer Reviews

Most Helpful Customer Reviews

27 of 28 people found the following review helpful By Optimistix on August 11, 2001
Format: Hardcover
This is easily one of the leading texts on data structures and algorithms - a third edition has already been released (however, that is practically a new book ,so read on :-)...). Sedgewick is a student of the great Donald Knuth, and a leading researcher and authority in the field of Algorithmics.
'Pound for pound', this might be as good as Cormen et al's classic, which is the undisputed leader among introductory books on algorithms. However, this has two advantages over that book :
(1)Size : Weighing in at a lean 656 pages, this is almost 40% smaller than Cormen's classic, while providing approximately the same breadth. However, Cormen has the edge in depth, especially rigorous analysis of algorithms' performance.
(2)'Real' code : This book has code snippets in C++, as opposed to Cormen which has it in pseudocode.However, the code is far from 'ready to run' - it's just enough to give you an idea how to go about building your own code.
Another plus point is short and crisp chapters which can be easily 'digested' - average chapter size is only about 14 pages.
This book really covers a lot of topics - sorting, searching, parsing, computational geometry, graphs, fast fourier transforms, mathematical algorithms and much,much more.
It is written in a very readable style, and the illustrations are a big help, perhaps the best in a book of this kind. It would've benefitted from a few more exercises, brief solutions, and a little more rigour in performance analysis.
The code is excellent at one level, but it's actually excellent C code masquerading as C++ code, i believe.
If you have no problem with C, you should perhaps go for the C version of this book - the C code is reminiscent of Kernighan & Ritchie. Beautiful, elegant C code !!
Read more ›
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again
19 of 20 people found the following review helpful By Optimistix on March 6, 2002
Format: Paperback
Just wanted to let everyone know that the reviews here (till 6th March
2002 at any rate) are not of the book 'Algorithms in C++ part 5
graph algorithms' by Robert Sedgewick, but of the earlier edition of
his book on algorithms.
To get an idea of the book it's supposed to be about, please refer to
the review(s) on 'Algorithms in C part 5 graph algorithms', which i
expect to identical but for the code.
It'd be surprising indeed if the book isn't substantially better than
the reviews for the earlier book indicate ..........
The first volume, ie parts 1-4 are excellent - please refer to the
reviews on that, they're for the current edition :-)
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again
15 of 16 people found the following review helpful By Christophe Keller on January 17, 2004
Format: Hardcover
I'm a learned industrial engineer in electronics but got into informatics right after my degree. So I never had a course on algorithmic and had to learn nearly everything by myself.
After some years of working in the field, I tought it was maybe time to get some background on the subject so I got this (now an outdated edition) of the book.
Well, it was the book it took the longest to me to finish in the informatics field.
The book explains a whole bunch of basic and more advanced general-purpose algorithms, and so has a good coverrage of the subject.
However, there are two problems with the book:
1) The coding style is very bad: the author likes to use global variables, and variable names are often very cryptic. Example:
* p = parent
* g = grandparent
* gg = greatgrandparent
* c = child
* x = current node
* y = temporary node
2) You cannot read this book's chapters in a random way: you have to follow the chapter ordering, because often knowledge of later chapters is based of knowledge of earlier chapters, and, because of the bad coding style you have to often remember the meaning of the cryptic variable names several chapters later when they are reused. If you're like me, you've forgotten the meaning, which means reread that damn chapter, which in turn can again be based on an earlier chapter. You get the picture why it took me so long?
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again
16 of 20 people found the following review helpful By A Customer on June 3, 1999
Format: Hardcover
It is strange to me why some people love this book so much. Admittedly, Sedgewick is very respected in his field and knows a lot about sorting algorithms, but his book is still dissapointing and very frustrating to read for a beginning computer science student. He seldom includes complete code in his examples, and where there is code, there are sometimes errors in the code.
This reviewer took Sedgewick's class at Princeton University where this book was the required text, and not only was the text poor, his lectures were terribly boring. He himself even recognized that there were errors in his book, and so he allowed his students and TA's to submit errors found in the book. At the end of the year, the list of references to mistakes in the book took up more than three pages.
This review is not the result of a student upset about his grade (an A is fine with me), but is rather an attempt to warn students about the potential pitfalls that may be encountered in reading Sedgewick's book. I suppose this could be a great book for an intermediate or advanced CS student who doesn't mind the sparse and sometimes erroneous code or the terse language used to describe fairly complex ideas. Also, there are some parts of the book that are well written and a pleasure to read. However, I would never recomend this book to anyone interested in learning algorithms for this first time without a fair amount of prior programming experience.
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again

Most Recent Customer Reviews

Want to discover more products? Check out this page to see more: c++