计算机程序设计艺术.第3卷,排序与查找(英文版.第2版)(计算机大师高德纳权威著作,精装版)
基本信息
推荐阅读
内容简介回到顶部↑
《计算机程序设计艺术》系列被公认为计算机科学领域的权威之作,深入阐述了程序设计理论,对计算机领域的发展有着极为深远的影响。本书是该系列的第3 卷,扩展了第1 卷中信息结构的内容,主要讲排序和查找。书中对排序和查找算法进行了详细的介绍,并对各种算法的效率做了大量的分析。
本书适合从事计算机科学、计算数学等各方面工作的人员阅读,也适合高等院校相关专业的师生作为教学参考书,对于想深入理解计算机算法的读者,是一份必不可少的珍品。
本书适合从事计算机科学、计算数学等各方面工作的人员阅读,也适合高等院校相关专业的师生作为教学参考书,对于想深入理解计算机算法的读者,是一份必不可少的珍品。
作译者回到顶部↑
本书提供作译者介绍
Donald E.Knuth 算法和程序设计技术的先驱者,是计算机排版系统TEX和METAFONT的发明者。 Donald.E.Knuth(唐纳德.E.克努特,中文名高德纳)是斯坦福大学计算机程序设计艺术的荣誉退休教授,Knuth教授获得了许多奖项和荣誉,包括美国计算机协会图灵奖(ACM Turing Award),美国前总统卡特授予的科学金奖(Medal of Science),美国数学学会斯蒂尔奖(AMS Steele Prize),以及1996年11月由于发明先进技术荣获的极受尊重的京都奖(KyotoPrize)。他因这些成就和大量创造性的影响深远的著作(19部书和160.. << 查看详细
目录回到顶部↑
chapter 5 sorting
*5.1. combinatorial properties of permutations
*5.1.1. inversions
*5.1.2. permutations of a multiset
*5.1.3. runs
*5.1.4. tableaux and involutions
5.2. internal sorting
5.2.1. sorting by insertion
5.2.2. sorting by exchanging
5.2.3. sorting by selection
5.2.4. sorting by merging
5.2.5. sorting by distribution
5.3. optimum sorting
5.3.1. minimum-comparison sorting
*5.3.2. minimum-comparison merging
*5.3.3. minimum-comparison selection
*5.3.4. networks for sorting
5.4. external sorting
5.4.1. multiway merging and replacement selection
*5.4.2. the polyphase merge
*5.1. combinatorial properties of permutations
*5.1.1. inversions
*5.1.2. permutations of a multiset
*5.1.3. runs
*5.1.4. tableaux and involutions
5.2. internal sorting
5.2.1. sorting by insertion
5.2.2. sorting by exchanging
5.2.3. sorting by selection
5.2.4. sorting by merging
5.2.5. sorting by distribution
5.3. optimum sorting
5.3.1. minimum-comparison sorting
*5.3.2. minimum-comparison merging
*5.3.3. minimum-comparison selection
*5.3.4. networks for sorting
5.4. external sorting
5.4.1. multiway merging and replacement selection
*5.4.2. the polyphase merge
前言回到顶部↑
烹饪成了一门艺术、一门高雅的学科,
厨师是有身份的人。
—— 提图斯·李维的《自建城以来》,罗伯特·伯顿的《忧郁的解剖》,1.2.2.2 节)
本书是第1 卷的第2 章中有关信息结构内容的自然延续,因为它为其他基本结构化思想增加了线性有序数据的概念。
书名中的“排序与查找”可能会使人误以为本书面向的只是从事一般性排序工作或信息检索工作的系统程序员。事实上,排序与查找为讨论众多重要的一般性问题提供了一个理想的框架:
好算法是怎么发z 现的?
z 如何改进给定的算法和程序?
z 如何从数学的角度分析算法的效率?
z 对于给定的任务,如何在不同的算法之间做出合理的选择?
z 在什么意义下,可以证明算法是“最可行的”?
z 计算理论同实际考虑如何相互影响?
z 如何将磁带、磁鼓或磁盘这样的外存有效应用于大型数据库?
事实上,我认为程序设计的几乎所有重要的方面都与排序或查找有关!
本卷包含整套书中的第5 章和第6 章。第5 章讨论排序,这个大问题主要划分成两个部分,即内部排序和外部排序。此外,这一章还有几个辅助性小节,讨论了有关排列(5.1 节)和最优排序方法(5.3 节)的辅助理论。第6 章讨论在表或文件中查找特定项的问题,该问题可以分为顺序查找、通过比较键进行查找、按数位性质进行查找以及散列法查找等,然后讨论了更难的辅键查找问题。这两章内容有着惊人的相互影响和很强的相似性。除了第2 章介绍的信息结构外,本书还讨论了两种重要的信息结构,即优先队列(5.2.3 节)和表示成平衡树的线性表(6.2.3 节)。与第1 卷和第2 卷一样,本书包含了其他出版物所没有的许多内容。许多人曾经以书面或口头的形式向我表达了他们的思想,我希望在用自己的语言表述时没有过度地歪曲他们的原意。
我一直没有时间系统地检索专利文献。事实上,我对当前为算法申请专利的做法深感不满(见5.4.5 节)。如果有人把本书中没有引用的相关专利发给我一份,我会在未来的版本中加以忠实的引用。不过,我还是希望人们继续发扬几百年以来形成的优良的数学传统,让新发现的算法进入公众领域。防范他人利用我们在计算机科学领域所做的贡献,并不是一种最好的谋生手段。
在从教学岗位上退下来之前,我曾用本书给大学三年级学生和研究生讲授第二门数据结构课,教学过程中省略了大部分数学内容。我还曾把本书的数学部分用作研究生算法分析课程的基础,并特别强调了5.1 节、5.2.2 节、6.3 节和6.4 节。也可以以5.3 节、5.4.4 节以及第2 卷的4.3.3 节、4.6.3 节和4.6.4 节的内容为基础,开设有关具体的计算复杂性的研究生课程。
除少数内容与第1 卷介绍的计算机有关之外,本书的大部分内容都是自成一体的。附录B 列出了本书用到的数学符号,其中有些与传统数学书中的符号略有不同。
第2 版前言
这一新版本与第1 卷和第2 卷的第3 版一样,都使用和进行排版,以此纪念这两个排版系统的完成。
将内容转换成电子格式使我能够借此机会逐个审阅文字和标点符号。我力图在保持原有的蓬勃朝气的同时加入一些可能更成熟的论断。新版增加了几十道新的习题,并为原有的几十道习题给出了改进过的新答案。改动可谓无处不在,但最重要的改动集中在5.1.4 节(关于排列和图表)、5.3 节(关于最优排序)、5.4.9 节(关于磁盘排序)、6.2.2 节(关于熵)、6.4 节(关于通用散列法)和6.5 节(关于多维树和Tries)。
厨师是有身份的人。
—— 提图斯·李维的《自建城以来》,罗伯特·伯顿的《忧郁的解剖》,1.2.2.2 节)
本书是第1 卷的第2 章中有关信息结构内容的自然延续,因为它为其他基本结构化思想增加了线性有序数据的概念。
书名中的“排序与查找”可能会使人误以为本书面向的只是从事一般性排序工作或信息检索工作的系统程序员。事实上,排序与查找为讨论众多重要的一般性问题提供了一个理想的框架:
好算法是怎么发z 现的?
z 如何改进给定的算法和程序?
z 如何从数学的角度分析算法的效率?
z 对于给定的任务,如何在不同的算法之间做出合理的选择?
z 在什么意义下,可以证明算法是“最可行的”?
z 计算理论同实际考虑如何相互影响?
z 如何将磁带、磁鼓或磁盘这样的外存有效应用于大型数据库?
事实上,我认为程序设计的几乎所有重要的方面都与排序或查找有关!
本卷包含整套书中的第5 章和第6 章。第5 章讨论排序,这个大问题主要划分成两个部分,即内部排序和外部排序。此外,这一章还有几个辅助性小节,讨论了有关排列(5.1 节)和最优排序方法(5.3 节)的辅助理论。第6 章讨论在表或文件中查找特定项的问题,该问题可以分为顺序查找、通过比较键进行查找、按数位性质进行查找以及散列法查找等,然后讨论了更难的辅键查找问题。这两章内容有着惊人的相互影响和很强的相似性。除了第2 章介绍的信息结构外,本书还讨论了两种重要的信息结构,即优先队列(5.2.3 节)和表示成平衡树的线性表(6.2.3 节)。与第1 卷和第2 卷一样,本书包含了其他出版物所没有的许多内容。许多人曾经以书面或口头的形式向我表达了他们的思想,我希望在用自己的语言表述时没有过度地歪曲他们的原意。
我一直没有时间系统地检索专利文献。事实上,我对当前为算法申请专利的做法深感不满(见5.4.5 节)。如果有人把本书中没有引用的相关专利发给我一份,我会在未来的版本中加以忠实的引用。不过,我还是希望人们继续发扬几百年以来形成的优良的数学传统,让新发现的算法进入公众领域。防范他人利用我们在计算机科学领域所做的贡献,并不是一种最好的谋生手段。
在从教学岗位上退下来之前,我曾用本书给大学三年级学生和研究生讲授第二门数据结构课,教学过程中省略了大部分数学内容。我还曾把本书的数学部分用作研究生算法分析课程的基础,并特别强调了5.1 节、5.2.2 节、6.3 节和6.4 节。也可以以5.3 节、5.4.4 节以及第2 卷的4.3.3 节、4.6.3 节和4.6.4 节的内容为基础,开设有关具体的计算复杂性的研究生课程。
除少数内容与第1 卷介绍的计算机有关之外,本书的大部分内容都是自成一体的。附录B 列出了本书用到的数学符号,其中有些与传统数学书中的符号略有不同。
第2 版前言
这一新版本与第1 卷和第2 卷的第3 版一样,都使用和进行排版,以此纪念这两个排版系统的完成。
将内容转换成电子格式使我能够借此机会逐个审阅文字和标点符号。我力图在保持原有的蓬勃朝气的同时加入一些可能更成熟的论断。新版增加了几十道新的习题,并为原有的几十道习题给出了改进过的新答案。改动可谓无处不在,但最重要的改动集中在5.1.4 节(关于排列和图表)、5.3 节(关于最优排序)、5.4.9 节(关于磁盘排序)、6.2.2 节(关于熵)、6.4 节(关于通用散列法)和6.5 节(关于多维树和Tries)。
媒体评论回到顶部↑
这一多卷本的鸿篇巨著被公认为对经典计算机科学的权威论述,数十年来,前3卷一直是广大学生、研究人员和业内人士学习程序设计理论和实践的无价之宝。
这是一部包含一切基础算法的宝典,是它教给了这一代软件开发人员关于计算机程序设计的绝大多数知识。
——Byte杂志1995年9月刊
无数的读者谈到过高德纳的著作对于自己的深刻影响。从事研究的人惊艳于他精美优雅的分析,而普通程序员则一直在卓有成效地利用书中提供的各种方案解决日常问题。这些书展现了作者的博观、清晰、精确和幽默,所有的人都钦佩不已。
我简直说不清楚这些书给我的学习和娱乐带来了多少欢乐时光。我在各种场合一有空就仔细研读,在车上,在餐馆,上班时,回到家里……甚至有次观看我儿子的球赛,趁他没上场的时候,我还拿出来看了一阵子。
——Charles Long
它本来是当参考书写的,但有些人却发现每一卷都可以兴致勃勃地从头读到尾。有位中国的程序员甚至把它比做读诗。
如果你自以为是一个很好的程序员,请去读读高德纳的《计算机程序设计艺术》吧……要是你真把它读下来了,就毫无疑问可以给我递简历了。
——比尔·盖茨
不管你的背景如何,只要你想认真地编写计算机程序,都有很好的理由把这套书的每一卷抱回家,便于研究和工作时随时翻阅。
遇到问题需要把高德纳的著作请下书架,总是个令人愉悦的经历。我发现,只要翻一翻这些书,就会立竿见影地“镇住”计算机。
——Jonathan Laventhol
这是一部包含一切基础算法的宝典,是它教给了这一代软件开发人员关于计算机程序设计的绝大多数知识。
——Byte杂志1995年9月刊
无数的读者谈到过高德纳的著作对于自己的深刻影响。从事研究的人惊艳于他精美优雅的分析,而普通程序员则一直在卓有成效地利用书中提供的各种方案解决日常问题。这些书展现了作者的博观、清晰、精确和幽默,所有的人都钦佩不已。
我简直说不清楚这些书给我的学习和娱乐带来了多少欢乐时光。我在各种场合一有空就仔细研读,在车上,在餐馆,上班时,回到家里……甚至有次观看我儿子的球赛,趁他没上场的时候,我还拿出来看了一阵子。
——Charles Long
它本来是当参考书写的,但有些人却发现每一卷都可以兴致勃勃地从头读到尾。有位中国的程序员甚至把它比做读诗。
如果你自以为是一个很好的程序员,请去读读高德纳的《计算机程序设计艺术》吧……要是你真把它读下来了,就毫无疑问可以给我递简历了。
——比尔·盖茨
不管你的背景如何,只要你想认真地编写计算机程序,都有很好的理由把这套书的每一卷抱回家,便于研究和工作时随时翻阅。
遇到问题需要把高德纳的著作请下书架,总是个令人愉悦的经历。我发现,只要翻一翻这些书,就会立竿见影地“镇住”计算机。
——Jonathan Laventhol








点击看大图







加载中...

