计算机程序设计艺术•卷1:基本算法.pdf

计算机程序设计艺术•卷1:基本算法.pdf
 

书籍描述

编辑推荐
《计算机程序设计艺术·卷1:基本算法(英文版·第3版)》编辑推荐:《计算机程序设计艺术》系列著作对计算机领域产生了深远的影响。这一系列堪称一项浩大的工程,自1962年开始编写,计划出版7卷,目前已经出版了4卷。《美国科学家》杂志曾将这套书与爱因斯坦的《相对论》等书并列称为20世纪最重要的12本物理学著作。目前Knuth正将毕生精力投入到这部史诗性著作的撰写中。想了解《计算机程序设计艺术·卷1:基本算法(英文版·第3版)》最新信息。

媒体推荐
这一多卷本的鸿篇巨著被公认为是对经典计算机科学的权威论述,数十年来,前3卷一直是广大学生、研究人员和业内人士学习程序设计理论和实践的无价之宝。
这是一部包含一切基础算法的宝典,是它教给了这一代软件开发人员关于计算机程序设计的
绝大多数知识。
  ——Byte杂志1995年9月刊
无数的读者谈到过Knuth的著作对于自己的深刻影响。从事研究的人惊讶于他精美优雅的分析,而普通程序员则一直在卓有成效地利用书中提供的各种方案解决日常问题。这些书展现了作者的博观、清晰、精确和幽默,所有的人都钦佩不已。
我简直说不清楚这些书给我的学习和娱乐带来了多少欢乐时光。我在各种场合一有空就仔细
研读,在车上,在餐馆,上班时,回到家里……甚至有次观看我儿子的球赛,趁他没上场的时候,
我还拿出来看了一阵子。
  ——Charles Long
它本来是当参考书写的,但有些人却发现每一卷都可以兴致勃勃地从头读到尾。有位中国的程序员甚至把它比做读诗。
如果你自以为是一个很好的程序员,请去读读Knuth的《计算机程序设计艺术》吧……要是你
真把它读下来了,就毫无疑问可以给我递简历了。
  ——比尔·盖茨
不管你的背景如何,只要你想认真地编写计算机程序,都有很好的理由把这套书的每一卷抱回家,便于研究和工作时随时翻阅。
20年来Knuth第一次全部修订了这3卷。我发现,只要翻一翻这些书,就会立竿见影地“镇住”
计算机。
  ——Jonathan Laventhol

作者简介
作者:(美国)高德纳(Donald E.Knuth)

高德纳,1938年1月10日出生于美国明尼苏达州的米尔沃基,著名计算机科学家,算法与程序设计技术的先驱,斯坦福大学计算机系荣誉退休教授,计算机排版系统TFX和ME_『AFONT字体系统的发明人,最年轻的图灵奖得主。他在计算机科学及数学领域出版和发表了多部具有广泛影响的著作和论文。
他获得了很多奖项和荣誉:
1971年获首届美国计算机协会(ACM)Grace Murray lopper奖
1973年当选为美国科学艺术学院院士
1974年获美国计算机协会图灵奖
1975年当选为美国国家科学院院士,同年荣获美国数学协会(MAA)福特奖(Lester R. Ford Award)
1979年获卡特总统颁发的美国科学奖
1981年当选为美国工程院院士
1982年获计算机先锋奖(Computer Pioneer Award)
1982年成为IEEE荣誉会员
1986年荣获美国数学学会(AMS)斯蒂 尔奖(Steele Award)
1988年获富兰克林奖章(Franklin Medal)
1994年获瑞典科学院Adelskold奖
1995年获IEEE冯·诺依曼奖
1996年获稻盛基金会京都奖(Kyoto Prize)
Knuth的中文名字高德纳广为人知,这是1 977年他访问中国之前由姚期智教授的夫人姚储枫所取。

目录
Chapter 1 Basic Concepts 1
1.1 Algorithms 1
1.2 Mathematical Preliminaries 10
1.2.1 Mathematical Induction 11
1.2.2 Numbers, Powers, and Logarithms 21
1.2.3 Sums and Products 27
1.2.4 Integer Functions and Elementary Number Theory 39
1.2.5 Permutations and Factorials 45
1.2.6 Binomial Coefficients 52
1.2.7 Harmonic Numbers 75
1.2.8 Fibonacci Numbers 79
1.2.9 Generating Functions 87
1.2.10 Analysis of an Algorithm 96
*1.2.11 Asymptotic Representations 107
*1.2.11.1 The O-notation 107
*1.2.11.2 Euler's summation formula 111
*1.2.11.3 Some asymptotic calculations 116
1.3 MIX 124
1.3.1 Description of MIX 124
1.3.2 The NIX Assembly Language 144
1.3.3 Applications to Permutations 164
1.4 Some Fundamental Programming Techniques 180
1.4.1 Subroutines 180
1.4.2 Coroutines 193
1.4.3 Interpretive Routines 200
1.4.3.1 A NIX simulator 202
*1.4.3.2 Trace routines 212
1.4.4 Input and Output 215
1.4.5 History and Bibliography 229

Chapter 2 Information Structures 232
2.1 Introduction 232
2.2 Linear Lists 238
2.2.1 Stacks, Queues, and Deques 238
2.2.2 Sequential Allocation 244
2.2.3 Linked Allocation 254
2.2.4 Circular Lists 273
2.2.5 Doubly Linked Lists 280
2.2.6 Arrays and Orthogonal Lists 298
2.3 Trees 308
2.3.1 Traversing Binary Trees 318
2.3.2 Binary Tree Representation of Trees 334
2.3.3 Other Representations of Trees 348
2.3.4 Basic Mathematical Properties of Trees 362
2.3.4.1 Free trees 363
2.3.4.2 Oriented trees 372
*2.3.4.3 The "infinity lemma" 382
*2.3.4.4 Enumeration of trees 386
2.3.4.5 Path length 399
*2.3.4.6 History and bibliography 406
2.3.5 Lists and Garbage Collection 408
2.4 Multilinked Structures 424
2.5 Dynamic Storage Allocation 435
2.6 History and Bibliography 457

Answers to Exercises 466

Appendix A Tables of Numerical Quantities 619
1. Fundamental Constants (decimal) 619
2. Fundamental Constants (octal) 620
3. Harmonic Numbers, Bernoulli Numbers, Fibonacci Numbers 621

Appendix B Index to Notations 623

Index and Glossary 628

序言
本书是应数以千计的读者来信要求而出版的。
我们用了多年的时间对大量的食谱进行了反复检验,
挑选出最佳的、有趣的、完美的食谱奉献给大家。
现在我们可以自信满满地说.
不管是谁,即使此前从来没有做过菜,
只要严格按书中的说明进行操作,也能获得跟我们一样的烹饪效果。
——McCall's Cookbook(1963)
为数字计算机编写程序的过程是特别吸引人的,因为我们不仅可以获得经济和科学两方面的收益,还能尽享写诗或作曲般的艺术体验。本书是多卷本中的第1卷,整套书旨在训练读者去掌握程序员必备的各种技能。
在接下来的章节中,我不打算介绍计算机程序设计的入门知识,而是假定读者已有一定的基础。必备知识实际上非常简单,但初学者恐怕需要一些时间和动手实践方能理解数字计算机的概念。读者应该具备如下知识。
a)对存储程序式数字计算机的工作原理有一些认识。不一定需要电子学背景,但需要知道指令在机器内存中是如何保存和连续执行的。
b)能够用计算机可以“理解”的确切术语来描述问题的解决方案。(这些机器不懂所谓的常识,它们只会精准地按要求干活,不会多做也不会少做。这是刚开始接触计算机时最难领悟的概念。)
c)掌握一些最基本的计算机技术,如循环(重复地执行一组指令)、子程序的使用、下标变量的使用。
d)对常见的计算机术语有所了解,如内存、寄存器、位、浮点、溢出、软件等。正文中没有下定义的一些术语,会在每卷最后的索引部分给出简明的定义。
或许可以把这4点归结为一个要求:读者应该起码为一台计算机编写和测试过至少(比如说)4个程序。
我力图使这套书能满足两方面的需求。首先,这些书总结了几个重要领域的知识,可以作为参考书;其次,它们可以用作自学教材或计算机与信息科学专业的大学教材。

文摘
插图:

计算机程序设计艺术•卷1:基本算法

内容简介
《计算机程序设计艺术》系列被公认为计算机科学领域的权威之作,《美国科学家》杂志曾将这套书与爱因斯坦的《相对论》等书并列称为20世纪最重要的12本物理学著作。《计算机程序设计艺术》深入阐述了程序设计理论,对计算机领域的发展有着极为深远的影响。《计算机程序设计艺术•卷1:基本算法(英文版•第3版)》是该系列的第1卷,讲解基本算法,其中包含了其他各卷都需用到的基本内容。本卷从基本概念开始,然后讲述信息结构,并辅以大量的习题及答案。
《计算机程序设计艺术•卷1:基本算法(英文版•第3版)》适合从事计算机科学、计算数学等各方面工作的人员阅读,也适合高等院校相关专业的师生作为教学参考书,对于想深入理解计算机算法的读者,是一份必不可少的珍品。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多