计算机程序设计艺术:英文影印版(全三卷,精)
分类: 图书,计算机/网络,影印版,
作者: (美)Donald E.Knuth 著
出 版 社: 清华大学出版社
出版时间: 2002-9-1字数:版次: 1页数: 780印刷时间: 2004/06/01开本:印次:纸张: 胶版纸I S B N : 9787302058168包装: 精装编辑推荐
如果你是一名真正优秀的程序员……读Knuth的《计算机程序设计艺术》。如果你读懂整套书,请给我发一份简历。
——Bill Gates 这部多卷专著是公认的对经典计算机科学最权威的描述。几十年来,无论是学生、研究人员还是编程从业人员,本套书的前三卷都是他们学习编程理论、进行编程实践的宝贵资源。
这是一套集所有基础算法之大成的经典之作,当今软件开发人员所掌握的绝大多数计算机程序设计的知识都来源于此。
——Byte
内容简介
为反映计算机领域的最新发展,Knuth二十多年来第一次将三卷书全部做了修订。他的修订主要集中在自上一版以来得到众人认可的新知识,已经解决的问题,以及有所变化的问题。为保持本书的权威性,在必要的地方对计算机领域先驱工作的历史信息做了更新;为维护作者苦心孤诣追求至善至美的盛誉,新版本对读者发现的少量技术性错误做了更正;为增加本书的挑战性,作者还添加了数百道习题。本套书由3卷组成。
第1卷 基本算法
--------------
第1卷首先介绍编程的基本概念和技术,然后详细讲解信息结构方面的内容,包括信息在计算机内部的表示方法、数据元素之间的结构关系,以及有效的信息处理方法。此外,书中还描述了编程在模拟、数值方法、符号计算、软件与系统设计等方面的初级应用。新版本增加了数十项简单但重要的算法和技术,并根据当前研究发展趋势在数学预备知识方面做了大量修改。
第2卷 半数值算法
----------------
第2卷对半数值算法领域做了全面介绍,分“随机数”和“算术”两章。本卷总结了主要算法范例及这些算法的基本理论,广泛剖析了计算机程序设计与数值分析间的相互联系。第3版中最引人注目的是,Knuth对随机数生成器进行了重新处理,对形式幂级数计算作了深入讨论。
第3卷 排序和查找
----------------
这是对第3卷的头一次修订,不仅是对经典计算机排序和查找技术的最全面介绍,而且还对第1卷中的数据结构处理技术作了进一步的扩充,通盘考虑了将大小型数据库和内外存储器。它遴选了一些经过反复检验的计算机方法,并对其效率做了定量分析。第3卷的突出特点是对“最优排序”一节作了修订,对排列论原理与通用散列法作了全新讨论。
本套书适用于所有需要深入学习编程的计算机人员,也可以作为计算机专业的教材。
作者简介
Donald.E.Knuth(唐纳德.E.克努特,中文名高德纳)是算法和程序设计技术的先驱者,是计算机排版系统TEX和METAFONT的发明者,他因这些成就和大量创造性的影响深远的著作(19部书和160篇论文)而誉满全球。作为斯坦福大学计算机程序设计艺术的荣誉退休教授,他当前正全神贯注于完成其关于计算机科学的史诗性的七卷集。这一伟大工程在1962年他还是加利福尼亚理工学院的研究生时就开始了。Knuth教授获得了许多奖项和荣誉,包括美国计算机协会图灵奖(ACM Turing Award),美国前总统卡特授予的科学金奖(Medal of Science),美国数学学会斯蒂尔奖(AMS Steele Prize),以及1996年11月由于发明先进技术而荣获的备受推崇的京都奖(Kyoto Prize)。Knuth教授现与其妻Jill生活于斯坦福校园内。
访问Knuth教授的个人主页,可以获得有关本书及本系列其他未出版图书的更多信息:
www-cs-faculty.stanford.edu/~knuth
目录
Chapter 1 Basic Concepts
1.1. Algorithms
1.2. Mathematical Preliminaries
1.2.1. Mathematical Induction
1.2.2. Numbers, Powers, and Logarithms
1.2.3. Sums and Products
1.2.4. Integer Functions and Elementary Number Theory
1.2.5. Permutations and Factorials
1.2.6. Binomial Coefficients
1.2.7. Harmonic Numbers
1.2.8. Fibonacci Numbers
1.2.9. Generating Functions
1.2.10. Analysis of an Algorithm
*1.2.11. Asymptotic Representations
*1.2.11.1. The O-notation
*1.2.11.2. Euler's summation formula
*1.2.11.3. Some asymptotic calculations
1.3. MIX 124
1.3.1. Description of MIX
1.3.2. The MIX Assembly Language
1.3.3. Applications to Permutations
1.4. Some Fundamental Programming Techniques
1.4.1. Subroutines
1.4.2. Goroutines
1.4.3. Interpretive Routines
1.4.3.1. A MIX simulator
*1.4.3.2. Trace routines
1.4.4. Input and Output
1.4.5. History and Bibliography
Chapter 2 Information Structures
2.1. Introduction
2.2. Linear Lists
2.2.1. Stacks, Queues, and Deques
2.2.2. Sequential Allocation
2.2.3. Linked Allocation
2.2.4. Circular Lists
2.2.5. Doubly Linked Lists
2 2.6. Arrays and Orthogonal Lists
2.3. Trees
2.3.1. Traversing Binary Trees
2.3.2. Binary Tree Representation of Trees
2.3.3. Other Representations of Trees
2.3.4. Basic Mathematical Properties of Trees
2.3.4.1. Free trees
2.3.4.2. Oriented trees
*2.3.4.3. The "infinity lemma"
*2.3.4.4. Enumeration of trees
2.3.4.5. Path length
*2.3.4.6. History and bibliography
2.3.5. Lists and Garbage Collection
2.4. Multilinked Structures
2.5. Dynamic Storage Allocation
History and Bibliography
Answers to Exercises
Appendix A Tables of Numerical Quantities
1. Fundamental Constants (decimal)
2. Fundamental Constants (octal)
3. Harmonic Numbers, Bernoulli Numbers, Fibonacci Numbers
Appendix B Index to Notations
Index and Glossary
Excerpt
Chapter 3 Random Numbers.
Introduction.
Generating Uniform Random Numbers.
The Linear Congruential Method.
Other Methods.
Statistical Tests.
General Test Procedures for Studying Random Data.
Empirical Tests.
Theoretical Tests.
The Spectral Test.
Other Types of Random Quantities.
Numerical Distributions.
Random Sampling and Shuffling.
What Is a Random Sequence?
Summary.
Chapter 4 Arithmetic.
Positional Number Systems.
Floating Point Arithmetic.
Single-Precision Calculations.
Accuracy of Floating Point Arithmetic.
Double-Precision Calculations.
Distribution of Floating Point Numbers.
Multiple Precision Arithmetic.
The Classical Algorithms.
Modular Arithmetic.
How Fast Can We Multiply?.
Radix Conversion.
Rational Arithmetic.
Fractions.
The Greatest Common Divisor.
Analysis of Euclid's Algorithm.
Factoring into Primes.
Polynomial Arithmetic.
Division of Polynomials.
Factorization of Polynomials.
Evaluation of Powers.
Evaluation of Polynomials.
Manipulation of Power Series.
Answers to Exercises.
Appendix A: Tables of Numerical Quantities.
Fundamental Constants (decimal).
Fundamental Constants (octal).
Harmonic Numbers, Bernoulli Numbers, Fibonacci Numbers.
Appendix B: Index to Notations.
Index and Glossary.
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.
The Cascade Merge.
Reading Tape Backwards.
The Oscillating Sort.
Practical Considerations for Tape Merging.
External Radix Sorting.
Two-Tape Sorting.
Disks and Drums.
Summary, History, and Bibliography.
Chapter 6 Searching.
Sequential Searching.
Searching by Comparison of Keys.
Searching an Ordered Table.
Binary Tree Searching.
Balanced Trees.
Multiway Trees.
Digital Searching.
Hashing.
Retrieval on Secondary Keys.
Answers to Exercises.
Appendix A: Tables of Numerical Quantities.
Fundamental Constants (decimal).
Fundamental Constants (octal).
Harmonic Numbers, Bernoulli Numbers, Fibonacci Numbers.
Appendix B:Index to Notations.
Index and Glossary.
媒体评论
无数读者都曾谈起过Knuth专著对他们个人产生的巨大影响。科学家们惊讶于他精美、雅致的问题分析方式,而普通程序员则利用他提供的方案成功地解决日常工作中遇到的问题。书的恢宏、透彻、精确与幽默赢得了所有人的尊敬。
Knuth专著伴我在学习和生活中度过了无数欢乐时光。我在车里,在餐馆里,在家里……甚至在我儿子小联赛的间隙都忘不了带上它们,一有空就捧出来阅读。
——Charles Long
这套书本来作为参考之用,但后来人们发现,把这套书的每一卷从头读到尾不仅是可能的,而且也是非常有意义的。一位中国的程序员甚至把他的阅读经历比做吟诗。
如果你是一名真正优秀的程序员……读Knuth的《计算机程序设计艺术》。如果你读懂整套书,请给我发一份简历。
——Bill Gates
不管基础如何,只要你想认真地编写任何计算机程序,你都有必要把这套书的任何一卷抱回家,以便在你学习和工作的时候随时翻阅。
要是有一个问题难到要把《计算机程序设计艺术》请下书架,那将是一种莫大的荣幸。我发现,这套书仅仅是开卷展读,就可能会对计算机产生巨大的影响。
——Jonathan Laventhol