《计算机程序设计艺术》系列是公认的计算机科学领域经典之作,深入阐述了程序设计理论,对计算机领域的发展有着极为深远的影响。本书是该系列的第 1 卷,讲解基本算法,其中包含了其他各卷都需用到的基本内容。本卷从基本概念开始,然后讲述信息结构,并辅以大量的习题及答案。
“计算机科学既壮观又幽美,我尝试尽自己所能,以*恰当的方式来解释我所了解的某些片断。很显然,我自己并没有任何超自然能力,但的确很喜欢讲述那些似乎静静地等待着人们去讲出来的故事。写书跟讲故事十分类似。”——图灵访谈之专访Donald E. Knuth 《计算机程序设计艺术》系列著作被公认为是对经典计算机科学的权威论述,数十年来,一直是广大学生、研究人员和业内人士学习程序设计理论和实践的无价之宝。这一宏伟浩大的工程始于1962年,计划出版7卷,目前已经出版了4卷。 《计算机程序设计艺术》堪称计算机科学领域的瑰宝。从事研究的人惊艳于其精美优雅的分析,而普通程序员则一直在卓有成效地利用书中提供的各种方案解决日常问题。这些书展现了作者的博观、清晰、精确和幽默,所有的人都钦佩不已。
Donald E. Knuth(高德纳)
著名计算机科学家,算法与程序设计技术的先驱者、斯坦福大学计算机系荣休教授、计算机排版系统TEX和METAFONT字体系统的发明人,因诸多成就以及大量富于创造力和具有深远影响的著作(19部书,160篇论文)而誉满全球。近些年,他将精力全部投入到《计算机程序设计艺术》七卷集的史诗般创作中。Knuth教授获得过许多奖项和荣誉,包括美国计算机协会图灵奖、美国国家科学奖章、美国数学学会的斯蒂尔奖,以及因发明先进技术于1996年荣获的京都奖。1996年,设立了以其名字命名的Donald E. Knuth奖,授予那些为计算机科学基础做出杰出贡献的人。
第1章 基本概念 1
1.1 算法 1
1.2 数学准备 8
1.2.1 数学归纳法 8
1.2.2 数、幂和对数 16
1.2.3 和与积 21
1.2.4 整数函数与初等数论 30
1.2.5 排列与阶乘 35
1.2.6 二项式系数 41
1.2.7 调和数 59
1.2.8 斐波那契数 62
1.2.9 生成函数 69
1.2.10 典型算法分析 76
1.2.11 渐近表示 85
1.2.11.1 大O记号 85
1.2.11.2 欧拉求和公式 88
1.2.11.3 若干渐近计算式 92
1.3 MIX 99
1.3.1 MIX的描述 99
1.3.2 MIX汇编语言 116
1.3.3 排列的应用 131
1.4 若干基本程序设计技术 150
1.4.1 子程序 150
1.4.2 协同程序 155
1.4.3 解释程序 161
1.4.3.1 MIX模拟程序 162
1.4.3.2 追踪程序 171
1.4.4 输入与输出 173
1.4.5 历史和参考文献 184
第2章 信息结构 187
2.1 引论 187
2.2 线性表 191
2.2.1 栈、队列和双端队列 191
2.2.2 顺序分配 195
2.2.3 链接分配 203
2.2.4 循环链表 217
2.2.5 双链表 222
2.2.6 数组与正交表 237
2.3 树 245
2.3.1 遍历二叉树 253
2.3.2 树的二叉树表示 265
2.3.3 树的其他表示 276
2.3.4 树的基本数学性质 287
2.3.4.1 自由树 287
2.3.4.2 定向树 294
2.3.4.3 无限性引理 301
2.3.4.4 树的枚举 304
2.3.4.5 路径长度 314
2.3.4.6 历史和参考文献 320
2.3.5 表和垃圾回收 322
2.4 多链结构 333
2.5 动态存储分配 342
2.6 历史和参考文献 358
习题答案 364
附录A 数值表 494
附录B 记号索引 498
附录C 算法和定理索引 502
人名索引 503
索引 508