计算机程序设计艺术 第3卷 排序和查找(第2版)(英文影印版)
基本信息
编辑推荐
无数读者都曾谈起过Knuth专著对他们个人产生的巨大影响。科学家们惊讶于他精美、雅致的问题分析方式,而普通程序员则利用他提供的方案成功地解决日常工作中遇到的问题。书的恢宏、透彻、精确与幽默赢得了所有人的尊敬。
Knuth专著伴我在学习和生活中度过了无数欢乐时光。我在车里,在餐馆里,在家里……甚至在我儿子小联赛的间隙都忘不了带上它们,一有空就捧出来阅读。
——Charles Long
这套书本来作为参考之用,但后来人们发现,把这套书的每一卷从头读到尾不仅是可能的,而且也是非常有意义的。一位中国的程序员甚至把他的阅读经历比做吟诗。
如果你是一名真正优秀的程序员……读Knuth的《计算机程序设计艺术》。如果你读懂整套书,请给我发一份简历。
——Bill Gates
不管基础如何,只要你想认真地编写任何计算机程序,你都有必要把这套书的任何一卷抱回家,以便在你学习和工作的时候随时翻阅。
要是有一个问题难到要把《计算机程序设计艺术》请下书架,那将是一种莫大的荣幸。我发现,这套书仅仅是开卷展读,就可能会对计算机产生巨大的影响。
——Jonathan Laventhol
内容简介回到顶部↑
[center][a href="#" onclick='winpop(7469);return false;'][img src=/computers/ebook/7469/cover.gif border=0][/a][/center]
卷3为分拣和搜索,这是本书的第1个修订版,它是对计算机分拣和搜索的一流技术的最全面的研究,它扩展了卷1中数据结构的处理方法,将大小数据库以及内存和外部存储都包含在内。本书包括对计算机方法仔细检查的选择方案,和其效率的大量分析。本书该版的独特之处在于优化了的分拣,以及对通用散列法和排列法的新的理论论述。
卷3为分拣和搜索,这是本书的第1个修订版,它是对计算机分拣和搜索的一流技术的最全面的研究,它扩展了卷1中数据结构的处理方法,将大小数据库以及内存和外部存储都包含在内。本书包括对计算机方法仔细检查的选择方案,和其效率的大量分析。本书该版的独特之处在于优化了的分拣,以及对通用散列法和排列法的新的理论论述。
作译者回到顶部↑
本书提供作译者介绍
Donald.E.Knuth(唐纳德.E.克努特,中文名高德纳)是算法和程序设计技术的先驱者,是计算机排版系统TEX和METAFONT的发明者,他因这些成就和大量创造性的影响深远的著作(19部书和160篇论文)而誉满全球。作为斯坦福大学计算机程序设计艺术的荣誉退休教授,他当前正全神贯注于完成其关于计算机科学的史诗性的七卷集。这一伟大工程在1962年他还是加利福尼亚理工学院的研究生时就开始了。Knuth教授获得了许多奖项和荣誉,包括美国计算机协会图灵奖(ACM Turing Award),美国前总统卡特授予的科学金.. << 查看详细
目录回到顶部↑
chapter 5 sorting.
combinatorial properties of permutations.
inversions.
permutations of a multiset.
runs.
tableaux and involutions.
internal sorting.
sorting by insertion.
sorting by exchanging.
sorting by selection.
sorting by merging.
sorting by distribution.
optimum sorting.
minimum-comparison sorting.
minimum-comparison merging.
minimum-comparison selection.
networks for sorting.
external sorting.
multiway merging and replacement selection.
the polyphase merge.
combinatorial properties of permutations.
inversions.
permutations of a multiset.
runs.
tableaux and involutions.
internal sorting.
sorting by insertion.
sorting by exchanging.
sorting by selection.
sorting by merging.
sorting by distribution.
optimum sorting.
minimum-comparison sorting.
minimum-comparison merging.
minimum-comparison selection.
networks for sorting.
external sorting.
multiway merging and replacement selection.
the polyphase merge.
前言回到顶部↑
Cookery iS become an art,
a noble science,
cooks are gentlemen.
-- TITUS LIVIUS. Ab Urbe Condita XXXlX.vi
(Robert Burton. Anatomy of Melancholy 1.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 externa1 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 coniext 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 is a surprising amouat of iaterplay 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 l 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 pateat 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 patellt not preselltly 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 aIgorithms into the public domain. There are better ways to earn a living than to prevent other people from making use of one's colltributions 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 computationa1 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.
a noble science,
cooks are gentlemen.
-- TITUS LIVIUS. Ab Urbe Condita XXXlX.vi
(Robert Burton. Anatomy of Melancholy 1.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 externa1 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 coniext 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 is a surprising amouat of iaterplay 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 l 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 pateat 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 patellt not preselltly 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 aIgorithms into the public domain. There are better ways to earn a living than to prevent other people from making use of one's colltributions 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 computationa1 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.








点击看大图






加载中...

