计算机程序设计艺术卷1:基本算法(英文版.第3版)(计算机大师高德纳权威著作,精装版)
基本信息
- 原书名: Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition)
- 原出版社: Addison-Wesley Professional
- 作者: (美)Donald E.Knuth
- 丛书名: 图灵计算机科学
- 出版社:人民邮电出版社
- ISBN:9787115232595
- 上架时间:2010-10-19
- 出版日期:2010 年10月
- 开本:16开
- 页码:650
- 版次:3-1
- 所属分类:
计算机 > 计算机科学理论与基础知识 > 计算理论 > 算法
计算机 > 软件与程序设计 > 综合 > 程序(设计)理论
推荐阅读
内容简介回到顶部↑
《计算机程序设计艺术》系列被公认为计算机科学领域的权威之作,深入阐述了程序设计理论,对计算机领域的发展有着极为深远的影响。本书是该系列的第1 卷,讲解
基本算法,其中包含了其他各卷都需用到的基本内容。本卷从基本概念开始,然后讲述信息结构,并辅以大量的习题及答案。
本书适合从事计算机科学、计算数学等各方面工作的人员阅读,也适合高等院校相关专业的师生作为教学参考书,对于想深入理解计算机算法的读者,是一份必不可少的
珍品。
基本算法,其中包含了其他各卷都需用到的基本内容。本卷从基本概念开始,然后讲述信息结构,并辅以大量的习题及答案。
本书适合从事计算机科学、计算数学等各方面工作的人员阅读,也适合高等院校相关专业的师生作为教学参考书,对于想深入理解计算机算法的读者,是一份必不可少的
珍品。
作译者回到顶部↑
目录回到顶部↑
chapter 1 basic concepts
1.1 algorithms
1.2 mathematical preliminaries
1.3 mix
1.4 some fundamental programming techniques
chapter 2 information structures
2.1 introduction
2.2 linear lists
2.3 trees
2.4 multilinked structures
2.5 dynamic storage allocation
2.6 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
1.1 algorithms
1.2 mathematical preliminaries
1.3 mix
1.4 some fundamental programming techniques
chapter 2 information structures
2.1 introduction
2.2 linear lists
2.3 trees
2.4 multilinked structures
2.5 dynamic storage allocation
2.6 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
前言回到顶部↑
本书是应数以千计的读者来信要求而出版的。
我们用了多年的时间对大量的食谱进行了反复检验,
挑选出最佳的、有趣的、完美的食谱奉献给大家。
现在我们可以自信满满地说,
不管是谁,即使此前从来没有做过菜,
只要严格按书中的说明进行操作,也能获得跟我们一样的烹饪效果。
—— McCall’s Cookbook (1963)
为数字计算机编写程序的过程是特别吸引人的,因为我们不仅可以获得经济和科学两方面的收益,还能尽享写诗或作曲般的艺术体验。本书是多卷本中的第1卷,整套书旨在训练读者去掌握程序员必备的各种技能。
在接下来的章节中,我不打算介绍计算机程序设计的入门知识,而是假定读者已有一定的基础。必备知识实际上非常简单,但初学者恐怕需要一些时间和动手实践方能理解数字计算机的概念。读者应该具备如下知识。
a) 对存储程序式数字计算机的工作原理有一些认识。不一定需要电子学背景,但需要知道指令在机器内存中是如何保存和连续执行的。
b) 能够用计算机可以“理解”的确切术语来描述问题的解决方案。(这些机器不懂所谓的常识,它们只会精准地按要求干活,不会多做也不会少做。这是刚开始接触计算机时最难领悟的概念。)
c) 掌握一些最基本的计算机技术,如循环(重复地执行一组指令)、子程序的使用、下标变量的使用。
d) 对常见的计算机术语有所了解,如内存、寄存器、位、浮点、溢出、软件等。正文中没有下定义的一些术语,会在每卷最后的索引部分给出简明的定义。或许可以把这4 点归结为一个要求:读者应该起码为一台计算机编写和测试过至少(比如说)4 个程序。
我力图使这套书能满足两方面的需求。首先,这些书总结了几个重要领域的知识,可以作为参考书;其次,它们可以用作自学教材或计算机与信息科学专业的大学教材。为此,我在书中加入了大量的习题,并为多数习题提供了答案。此外,我在书中尽可能地用事实说话,言之有据,避免做一些含糊的泛泛而谈。这套书针对的读者不是那些对计算机只有一时兴趣的人,但也决不仅限于计算机专业人士。其实,我的一个主要目标是使其他领域的广大工作者能够方便地了解这些程序设计方法,他们本可以利用计算机获得更丰硕的成果,但却没时间去技术刊物中查找必需的信息。
这套书的主题可以称为“非数值分析”。在传统意义上,计算机是与方程求根、数值插值与积分等数值问题求解联系在一起的,但我不会去专门讨论数值问题,最多只顺带提一下。数值计算的程序设计是一个发展迅速、引人入胜的领域,目前已出版了许多这方面的书。不过,从20 世纪60 年代初期开始,计算机更多地是用于处理那些很少出现数值的问题,此时用到的是计算机的决策能力而非算术运算能力。非数值问题中也会用到一些加法和减法,但基本不需要乘法和除法。当然,即便是主要关注数值计算程序设计的人也可以在非数值方法的学习中受益,因为数值程序中也会用到非数值方法。
非数值分析的研究成果散见于大量科技刊物中。通过研究,我从大量文献中提炼出了一些可以用于多种编程场合的最基本的方法,并尝试着将其组织为一套“理论”。同时,我还展示了如何应用这一理论解决大量的实际问题。
当然,“非数值分析”是一种太过否定性的提法,使用肯定性的描述语来刻画这一主题要好得多。“信息处理”对于我们的内容而言过于宽泛,“程序设计技术”又显得太狭窄了,因此我提出用算法分析来概括这套书的主题比较恰当,这一名称暗示我们将探讨“与特定计算机算法的性质有关的理论”。整套书以“计算机程序设计艺术”为题,内容总览如下。
第1 卷基础算法
第1 章基本概念
第2 章信息结构
我们用了多年的时间对大量的食谱进行了反复检验,
挑选出最佳的、有趣的、完美的食谱奉献给大家。
现在我们可以自信满满地说,
不管是谁,即使此前从来没有做过菜,
只要严格按书中的说明进行操作,也能获得跟我们一样的烹饪效果。
—— McCall’s Cookbook (1963)
为数字计算机编写程序的过程是特别吸引人的,因为我们不仅可以获得经济和科学两方面的收益,还能尽享写诗或作曲般的艺术体验。本书是多卷本中的第1卷,整套书旨在训练读者去掌握程序员必备的各种技能。
在接下来的章节中,我不打算介绍计算机程序设计的入门知识,而是假定读者已有一定的基础。必备知识实际上非常简单,但初学者恐怕需要一些时间和动手实践方能理解数字计算机的概念。读者应该具备如下知识。
a) 对存储程序式数字计算机的工作原理有一些认识。不一定需要电子学背景,但需要知道指令在机器内存中是如何保存和连续执行的。
b) 能够用计算机可以“理解”的确切术语来描述问题的解决方案。(这些机器不懂所谓的常识,它们只会精准地按要求干活,不会多做也不会少做。这是刚开始接触计算机时最难领悟的概念。)
c) 掌握一些最基本的计算机技术,如循环(重复地执行一组指令)、子程序的使用、下标变量的使用。
d) 对常见的计算机术语有所了解,如内存、寄存器、位、浮点、溢出、软件等。正文中没有下定义的一些术语,会在每卷最后的索引部分给出简明的定义。或许可以把这4 点归结为一个要求:读者应该起码为一台计算机编写和测试过至少(比如说)4 个程序。
我力图使这套书能满足两方面的需求。首先,这些书总结了几个重要领域的知识,可以作为参考书;其次,它们可以用作自学教材或计算机与信息科学专业的大学教材。为此,我在书中加入了大量的习题,并为多数习题提供了答案。此外,我在书中尽可能地用事实说话,言之有据,避免做一些含糊的泛泛而谈。这套书针对的读者不是那些对计算机只有一时兴趣的人,但也决不仅限于计算机专业人士。其实,我的一个主要目标是使其他领域的广大工作者能够方便地了解这些程序设计方法,他们本可以利用计算机获得更丰硕的成果,但却没时间去技术刊物中查找必需的信息。
这套书的主题可以称为“非数值分析”。在传统意义上,计算机是与方程求根、数值插值与积分等数值问题求解联系在一起的,但我不会去专门讨论数值问题,最多只顺带提一下。数值计算的程序设计是一个发展迅速、引人入胜的领域,目前已出版了许多这方面的书。不过,从20 世纪60 年代初期开始,计算机更多地是用于处理那些很少出现数值的问题,此时用到的是计算机的决策能力而非算术运算能力。非数值问题中也会用到一些加法和减法,但基本不需要乘法和除法。当然,即便是主要关注数值计算程序设计的人也可以在非数值方法的学习中受益,因为数值程序中也会用到非数值方法。
非数值分析的研究成果散见于大量科技刊物中。通过研究,我从大量文献中提炼出了一些可以用于多种编程场合的最基本的方法,并尝试着将其组织为一套“理论”。同时,我还展示了如何应用这一理论解决大量的实际问题。
当然,“非数值分析”是一种太过否定性的提法,使用肯定性的描述语来刻画这一主题要好得多。“信息处理”对于我们的内容而言过于宽泛,“程序设计技术”又显得太狭窄了,因此我提出用算法分析来概括这套书的主题比较恰当,这一名称暗示我们将探讨“与特定计算机算法的性质有关的理论”。整套书以“计算机程序设计艺术”为题,内容总览如下。
第1 卷基础算法
第1 章基本概念
第2 章信息结构
媒体评论回到顶部↑
这一多卷本的鸿篇巨著被公认为对经典计算机科学的权威论述,数十年来,前3卷一直是广大学生、研究人员和业内人士学习程序设计理论和实践的无价之宝。
这是一部包含一切基础算法的宝典,是它教给了这一代软件开发人员关于计算机程序设计的绝大多数知识。
——Byte杂志1995年9月刊
无数的读者谈到过高德纳的著作对于自己的深刻影响。从事研究的人惊艳于他精美优雅的分析,而普通程序员则一直在卓有成效地利用书中提供的各种方案解决日常问题。这些书展现了作者的博观、清晰、精确和幽默,所有的人都钦佩不已。
我简直说不清楚这些书给我的学习和娱乐带来了多少欢乐时光。我在各种场合一有空就仔细研读,在车上,在餐馆,上班时,回到家里……甚至有次观看我儿子的球赛,趁他没上场的时候,我还拿出来看了一阵子。
——Charles Long
它本来是当参考书写的,但有些人却发现每一卷都可以兴致勃勃地从头读到尾。有位中国的程序员甚至把它比做读诗。
如果你自以为是一个很好的程序员,请去读读高德纳的《计算机程序设计艺术》吧……要是你真把它读下来了,就毫无疑问可以给我递简历了。——比尔·盖茨
不管你的背景如何,只要你想认真地编写计算机程序,都有很好的理由把这套书的每一卷抱回家,便于研究和工作时随时翻阅。
遇到问题需要把高德纳的著作请下书架,总是个令人愉悦的经历。我发现,只要翻一翻这些书,就会立竿见影地“镇住”计算机。
——Jonathan Laventhol
这是一部包含一切基础算法的宝典,是它教给了这一代软件开发人员关于计算机程序设计的绝大多数知识。
——Byte杂志1995年9月刊
无数的读者谈到过高德纳的著作对于自己的深刻影响。从事研究的人惊艳于他精美优雅的分析,而普通程序员则一直在卓有成效地利用书中提供的各种方案解决日常问题。这些书展现了作者的博观、清晰、精确和幽默,所有的人都钦佩不已。
我简直说不清楚这些书给我的学习和娱乐带来了多少欢乐时光。我在各种场合一有空就仔细研读,在车上,在餐馆,上班时,回到家里……甚至有次观看我儿子的球赛,趁他没上场的时候,我还拿出来看了一阵子。
——Charles Long
它本来是当参考书写的,但有些人却发现每一卷都可以兴致勃勃地从头读到尾。有位中国的程序员甚至把它比做读诗。
如果你自以为是一个很好的程序员,请去读读高德纳的《计算机程序设计艺术》吧……要是你真把它读下来了,就毫无疑问可以给我递简历了。——比尔·盖茨
不管你的背景如何,只要你想认真地编写计算机程序,都有很好的理由把这套书的每一卷抱回家,便于研究和工作时随时翻阅。
遇到问题需要把高德纳的著作请下书架,总是个令人愉悦的经历。我发现,只要翻一翻这些书,就会立竿见影地“镇住”计算机。
——Jonathan Laventhol


点击看大图







加载中...
