发新话题
打印

[算法&数据结构] 编程珠玑(第二版)

编程珠玑(第二版)

编程珠玑(第二版)
作者:[美]本特利 著,谢君英,石朝江 译
出版社:中国电力出版社
ISBN:9787508319148
出版时间:2004-4-1
版次:1版1次
页数:217 字数:276000 纸张:胶版纸 包装:平装

内容提要
如果让程序员们列出他们最喜欢的书籍,Jon Bentley的《编程珠玑》常常可以位于经典之列。如同珍珠来自于曾经折磨牡蛎的沙粒,程序设计的珍珠也来自曾经折磨程序员的实际问题。Bentley的珍珠超出了可靠工程学的范畴、在洞察力和创造力的王国中为那些恼人的问题提供了独特而巧妙的解决方案。通过一些精心设计的有趣而且颇具指导意义的程序,书中充满了对实用程序设计技巧及基本设计原则的清晰而机智的描述。因此,《编程珠玑》得到各个层次程序员的青睐并不让人感觉意外。
Bentley彻底更新了第一版中的大多数素材,以反映当今的程序设计方法和环境。此外还增加了关于以下三个方面的新内容:
·测试、调试和定时。
·集合表示。
·字符串问题。
原来的所有程序都重新进行了改写,并生成了等量的新代码。您可以从本书网站获取所有程序的C或C++实现。


编辑推荐
“《编程珠玑》第一版是我职业生涯早期阅读过的最有影响力的书籍之一,第一次从该书中学到的许多观点很久以后仍然使我受益匪浅。Jon在第二版中对素材进行了大量更新,这些新例子的新鲜程度给我留下了深刻的印象。”
新版本中保持不变的是Bentley对于程序设计问题本质的关注,以及他针对这些问题给出的优美解决方案。不论您是第一次阅读Bentley的经典,还是想再次领略他作品中的新观点,这本书都肯定会成为您最喜爱的书目之一。


目录
前言
第一部分 预备知识
第1章 开篇
1.1 一次友好的对话
1.2 精确的问题陈述
1.3 程序设计
1.4 实现纲要
1.5 原则
1.6 问题
1.7 进阶阅读
第2章 啊哈!算法
2.1 三个问题
2.2 无所不在的二分查找法
2.3 原语的力量
2.4 归拢:排序
2.5 原则
2.6 问题
2.7 进阶阅读
2.8 实现变位词程序(补充材料)
第3章 数据结构程序
3.1 调查程序
3.2 表单字母编程
3.3 数组例子
3.4 构造数据
3.5 针对特定数据的强大工具
3.6 原则
3.7 问题
3.8 进阶阅读
第4章 编写正确的程序
4.1 二分查找的挑战
4.2 编写程序
4.3 理解程序
4.4 原则
4.5 程序验证的任务
4.6 问题
4.7 进阶阅读
第5章 编程中的次要问题
5.1 从伪代码到C语言
5.2 测试装备
5.3 断言的艺术
5.4 自动化测试
5.5 定时
5.6 完整的程序
5.7 原则
5.8 问题
5.9 进阶阅读
5.10 调试[补充材料]
第二部分 性能
第6章 性能透视
6.1 案例研究
6.2 设计层次
6.3 原则
6.4 问题
6.5 进阶阅读
第7章 封底计算
7.1 基本技能
7.2 性能估计
7.3 安全系数
7.4 利特尔法则
7.5 原则
7.6 问题
7.7 进阶阅读
7.8 日常生活中的快速计算[补充材料]
第8章 算法设计技术
8.1 问题和简单算法
8.2 两个二次算法
8.3 分治算法
8.4 扫描算法
8.5 重要性
8.6 原则
8.7 问题
8.8 进阶阅读
第9章 代码优化
9.1 一个典型的故事
9.2 第一个辅助采样器
9.3 主要的外科手术——二分查找
9.4 原则
9.5 问题
9.6 进阶阅读
第10章 压缩空间
10.1 关键——简单性
10.2 一个演示问题
10.3 数据空间技术
10.4 编码空间技术
10.5 原则
10.6 问题
10.7 进阶阅读
10.8 巨大的压缩[补充材料]
第三部分 产品
第11章 排序
11.1 插入排序
11.2 简单快速排序
11.3 更好的快速排序
11.4 原则
11.5 问题
11.6 进阶阅读
第12章 抽样问题
12.1 一个实际问题
12.2 一种解决方案
12.3 设计空间
12.4 原则
12.5 问题
12.6 进阶阅读
第13章 查找
13.1 接口
13.2 线性结构
13.3 二分查找树
13.4 整数结构
13.5 原则
13.6 问题
13.7 进阶阅读
13.8 实际查找问题[补充内容]
第14章 堆
14.1 数据结构
14.2 两个关键函数
14.3 优先队列
14.4 排序算法
14.5 原则
14.6 问题
14.7 进阶阅读
第15章 珍珠字符串
15.1 单词
15.2 词组
15.3 生成文本
15.4 原则
15.5 问题
15.6 进阶阅读
第一版本的尾声
第二版的尾声
附录1 算法分类
排序
查找
其他集合算法
与字符串相关的算法
向量和矩阵算法
随机对象
数值算法
附录2 估算测试
附录3 时间和空间成本模型
附录4 代码优化规则
用空间换取时间规则
用时间换取空间规则
循环规则
逻辑规则
过程规则
表示规则
附录5 C++中的查找类
部分问题的答案显示
部分问题的答案
附件: 您所在的用户组无法下载或查看附件

TOP

书的翻译质量真的不敢恭维。一般来说,书中出现一两个错误还是可以理解的,失误总是有可能的。但是不能容忍的是译者的汉语是按英文语法组织的,这个是态度问题,就严重了。老实说,这个汉语比英语还晦涩,不如直接去读英语好了,看着还舒服些。
例如:
E文版后后面的习题答案中,Solution for Column2 (A.)In the first pass of the algorithm we read the (at most) four billion input integers and write those with a leading zero bit to one sequential file and those with a leading one bit to anothor file.
译者的译文(P196):我们在算法的第一个通道读取了40亿个整数,并在这些输入整数前加上一个0位,然后输出到一个顺序文件中,在这些输入整数前加一位1并输出到另一个文件中。
1.可能译者没有看或者没有看懂的情况下就译出了这段话。write those with leading zero/one bit bit,看懂这个算法的话,我们可以知道,原作者的意思是将以0开头(最高位为0)的数写到一个文件,将以1开头(最高位为1)的数写到另一个文件,从而缩小查找范围。而译者尽然翻译成整数前加一个0/1位再写入文件。汗.....
2.整本书中,译者将“pass”译成“通道”,读起来很别扭,我觉得译成“遍”比较贴切点。譬如第一章中,通过遍历40遍的方法在1M内存中对文件中1千万个不重复整数进行排序时,原作者是这么说的:"We will therefore use a program that makes 40 passes over the input file.On the first pass it reads into memeoryy any integer between 0 and 249999,sorts the (at most) 250000 integers and writes them to the output file, The second pass sorts the integers from 250000 to 499999,and so on to the 40th pass, which sorts 9750000 to 9999999."。显然作者的意思是对输入文件遍历40次,第一次遍历过程中将值大于0、小于249999的所有整数读入内存,然后进行快速排序,再写入目标文件;第二次遍历过程中将值大于250000、小于499999的所有整数读入内存,排完序后写入目标文件,后面依此类推。而译者的译文是:“我们将使用一个在输入文件中带有40个通道大程序。在第一个通道中它将0到249000之间的任意整数独到内存中,并(至多)对250000个整数进行排序,……”。再往后面看:“Multiple-Pass Algorithms. These algorithms make several passes over their  input data, accomplishing a little more each time.",对应的译文是:“多通道算法。这些算法具有多个输入数据的通道,每读一次就向完成前进一步。”。译者可能也是没有看懂这个算法,硬是将“pass”翻译成风马牛不相及的“通道”。

这些只是前面两章中错的太离谱的两处,后面还有更多,懒得写了。不知道是译者的水平问题还是态度问题,竟把如此好的一本书给糟蹋了,默哀……
期待有新的中文版出现.毕竟,不是每个对这本书感兴趣的人都可以轻松的读懂原著。
建议大家目前还是看英文版吧,免得在译者错误的翻译上浪费时间...

TOP

不错,谢谢楼主分享!

TOP

发新话题