The Art of Computer Programming Volume 3: Sorting and Searching

by
Edition: 2nd
Format: Hardcover
Pub. Date: 1998-04-24
Publisher(s): Addison-Wesley Professional
  • Free Shipping Icon

    This Item Qualifies for Free Shipping!*

    *Excludes marketplace orders.

  • Complimentary 7-Day eTextbook Access - Read more
    When you rent or buy this book, you will receive complimentary 7-day online access to the eTextbook version from your PC, Mac, tablet, or smartphone. Feature not included on Marketplace Items.
List Price: $83.99

Buy New

Arriving Soon. Will ship when available.
$79.99

Rent Book

Select for Price
There was a problem. Please try again later.

Rent Digital

Rent Digital Options
Online:1825 Days access
Downloadable:Lifetime Access
$91.19
$91.19

Used Book

We're Sorry
Sold Out

How Marketplace Works:

  • This item is offered by an independent seller and not shipped from our warehouse
  • Item details like edition and cover design may differ from our description; see seller's comments before ordering.
  • Sellers much confirm and ship within two business days; otherwise, the order will be cancelled and refunded.
  • Marketplace purchases cannot be returned to eCampus.com. Contact the seller directly for inquiries; if no response within two days, contact customer service.
  • Additional shipping costs apply to Marketplace purchases. Review shipping costs at checkout.

Summary

The bible of all fundamental algorithms and the work that taught many of today's software developers most of what they know about computer programming. #x2014;Byte, September 1995 I can't begin to tell you how many pleasurable hours of study and recreation they have afforded me! I have pored over them in cars, restaurants, at work, at home... and even at a Little League game when my son wasn't in the line-up. #x2014;Charles Long If you think you're a really good programmer... read [Knuth's] Art of Computer Programming... You should definitely send me a resume if you can read the whole thing. #x2014;Bill Gates It's always a pleasure when a problem is hard enough that you have to get the Knuths off the shelf. I find that merely opening one has a very useful terrorizing effect on computers. #x2014;Jonathan Laventhol The first revision of this third volume is the most comprehensive survey of classical computer techniques for sorting and searching. It extends the treatment of data structures in Volume 1 to consider both large and small databases and internal and external memories. The book contains a selection of carefully checked computer methods, with a quantitative analysis of their efficiency. Outstanding features of the second edition include a revised section on optimum sorting and new discussions of the theory of permutations and of universal hashing.

Author Biography

Donald E. Knuth is known throughout the world for his pioneering work on algorithms and programming techniques, for his invention of the Tex and Metafont systems for computer typesetting, and for his prolific and influential writing. Professor Emeritus of The Art of Computer Programming at Stanford University, he currently devotes full time to the completion of these fascicles and the seven volumes to which they belong.



Table of Contents

Sorting
1(392)
Combinatorial Properties of Permutations
11(62)
Inversions
11(11)
Permutations of a Multiset
22(13)
Runs
35(12)
Tableaux and Involutions
47(26)
Internal sorting
73(107)
Sorting by Insertion
80(25)
Sorting by Exchanging
105(33)
Sorting by Selection
138(20)
Sorting by Merging
158(10)
Sorting by Distribution
168(12)
Optimum Sorting
180(68)
Minimum-Comparison Sorting
180(17)
Minimum-Comparison Merging
197(10)
Minimum-Comparison Selection
207(12)
Networks for Sorting
219(29)
External Sorting
248(132)
Multiway Merging and Replacement Selection
252(15)
The Polyphase Merge
267(21)
The Cascade Merge
288(11)
Reading Tape Backwards
299(12)
The Oscillating Sort
311(6)
Practical Considerations for Tape Merging
317(26)
External Radix Sorting
343(5)
Two-Tape Sorting
348(8)
Disks and Drums
356(24)
Summary, History, and Bibliography
380(12)
Searching
392(192)
Sequential Searching
396(13)
Searching by Comparison of Keys
409(83)
Searching an Ordered Table
409(17)
Binary Tree Searching
426(32)
Balanced Trees
458(23)
Multiway Trees
481(11)
Digital Searching
492(21)
Hashing
513(46)
Retrieval on Secondary Keys
559(25)
Answers to Exercises 584(164)
Appendix A -- Tables of Numerical Quantities 748(4)
1. Fundamental Constants (decimal)
748(1)
2. Fundamental Constants (octal)
749(1)
3. Harmonic Numbers, Bernoulli Numbers, Fibonacci Numbers
750(2)
Appendix B -- Index to Notations 752(5)
Index and Glossary 757

Excerpts

Cookery is become an art, a noble science; cooks are gentlemen. TITUS LIVIUS,Ab Urbe ConditaXXXIX.vi (Robert Burton,Anatomy of Melancholy1.2.2.2) This book forms a natural sequel to the material on information structures in Chapter 2 of Volume 1, because it adds the concept of linearly ordered data to the other basic structural ideas. The title "Sorting and Searching" may sound as if this book is only for those systems programmers who are concerned with the preparation of general-purpose sorting routines or applications to information retrieval. But in fact the area of sorting and searching provides an ideal framework for discussing a wide variety of important general issues: How are good algorithms discovered? How can given algorithms and programs be improved? How can the efficiency of algorithms be analyzed mathematically? How can a person choose rationally between different algorithms for the same task? In what senses can algorithms be proved ''best possible''? How does the theory of computing interact with practical considerations? How can external memories like tapes, drums, or disks be used efficiently with large databases? Indeed, I believe that virtually every important aspect of programming arises somewhere in the context of sorting or searching! This volume comprises Chapters 5 and 6 of the complete series. Chapter 5 is concerned with sorting into order; this is a large subject that has been divided chiefly into two parts, internal sorting and external sorting. There also are supplementary sections, which develop auxiliary theories about permutations (Section 5.1) and about optimum techniques for sorting (Section 5.3). Chapter 6 deals with the problem of searching for specified items in tables or files; this is subdivided into methods that search sequentially, or by comparison of keys, or by digital properties, or by hashing, and then the more difficult problem of secondary key retrieval is considered. There searching related to sorting is a surprising amount of interplay between both chapters, with strong analogies tying the topics together. Two important varieties of information structures are also discussed, in addition to those considered in Chapter 2, namely priority queues (Section 5.2.3) and linear lists represented as balanced trees (Section 6.2.3). Like Volumes 1 and 2, this book includes a lot of material that does not appear in other publications. Many people have kindly written to me about their ideas, or spoken to me about them, and I hope that I have not distorted the material too badly when I have presented it in my own words. I have not had time to search the patent literature systematically; indeed, I decry the current tendency to seek patents on algorithms (see Section 5.4.5). If somebody sends me a copy of a relevant patent not presently cited in this book, I will dutifully refer to it in future editions. However, I want to encourage people to continue the centuries-old mathematical tradition of putting newly discovered algorithms into the public domain. There are better ways to earn a living than to prevent other people from making use of one's contributions to computer science. Before I retired from teaching, I used this book as a text for a student's second course in data structures, at the junior-to-graduate level, omitting most of the mathematical material. I also used the mathematical portions of this book as the basis for graduate-level courses in the analysis of algorithms, emphasizing especially Sections 5.1, 5.2.2, 6.3, and 6.4. A graduate-level course on concrete computational complexity could also be based on Sections 5.3, and 5.4.4, together with Sections 4.3.3, 4.6.3, and 4.6.4 of Volume 2. For the most part this book is self-contained, except for occasional discussions relating to the MIX computer explained in Volume 1. Appendix B MIX computer contains a summary

An electronic version of this book is available through VitalSource.

This book is viewable on PC, Mac, iPhone, iPad, iPod Touch, and most smartphones.

By purchasing, you will be able to view this book online, as well as download it, for the chosen number of days.

Digital License

You are licensing a digital product for a set duration. Durations are set forth in the product description, with "Lifetime" typically meaning five (5) years of online access and permanent download to a supported device. All licenses are non-transferable.

More details can be found here.

A downloadable version of this book is available through the eCampus Reader or compatible Adobe readers.

Applications are available on iOS, Android, PC, Mac, and Windows Mobile platforms.

Please view the compatibility matrix prior to purchase.