标签
内容简介
《编程珠玑(第2版)》是计算机科学领域的经典名著,源自作者乔恩·本特利(Jon Bentley)在《ACM通讯》上广受欢迎的“Programming Pearls”专栏,结集后成为影响几代程序员的作品。全书并不按教材体例系统罗列算法,而是围绕程序员在真实开发中会遭遇的具体问题展开:如何给一个约千万条记录的磁盘文件排序、如何从海量数据中抽样、如何设计一个既省空间又快速的搜索结构、如何调优一段慢得无法接受的代码。 全书分为“基础”“性能”“应用”三部分,共15章。基础部分以开篇的磁盘排序问题引入问题定义、程序设计与实现概要的完整流程,接着讨论二分搜索、数据驱动程序结构、正确性验证与测试工具等主题;性能部分讨论性能分析、粗略估算(含Little定律)、算法设计技术(分治、扫描等)、代码调优与空间压缩;应用部分则分章处理排序、取样、搜索、堆与字符串处理等经典问题。每章末尾附有习题与延伸阅读,书后还给出部分习题提示与答案,以及算法分类、估算测试、时空开销模型、代码调优法则等附录。 作者的写法强调“想清楚再写”,用案例和轶事引导读者理解问题本质,而不是背诵代码。书中示例多用C/C++语言实现,兼顾实战示范意义,对希望从“能写出程序”迈向“写得出好程序”的读者尤其有价值。
编辑推荐
一本薄薄两百多页的书,却被无数程序员列进“最心爱的计算机图书”名单,靠的不是覆盖面,而是密度。本特利把在贝尔实验室和课堂里打磨多年的问题搬到纸面上:从“给一千万条记录排序”这个看似平淡的开头,一路讲到二分搜索的边界陷阱、数据如何决定程序结构、估算的数量级直觉、代码调优的分寸,以及排序、取样、搜索、堆、字符串这些经久不衰的经典题目。 它的可贵之处在于教“怎么想”,而不是“怎么写”。每一章先给出一个具体而棘手的场景,再和读者一起试错、走弯路、修正,最后提炼出可迁移的原则;章末的习题与深入阅读更像一份份小课题,逼着人合上书自己动手。黄倩、钱丽艳的译笔简洁准确,术语处理稳妥,刘田审校也保证了技术细节的可靠性。 如果你只把这本书当小说翻一遍,会觉得“不过如此”;但只要肯在每道题上停一停,就会明白“珠玑”二字的分量。薄,是因为删得狠;精,是因为想得透。
适合谁读
适合
- 已经会用一门语言写程序、希望提升设计与分析能力的开发者
- 准备算法面试或参加竞赛,需要培养问题拆解直觉的读者
- 计算机专业学生,作为数据结构与算法课程之外的补充读物
- 从事性能优化、嵌入式或底层开发,关注空间与时间权衡的工程师
不适合
- 零编程基础、尚未掌握任一编程语言的入门读者
- 只想找一份可直接复制的完整代码或框架手册的人
- 期待系统教材式知识清单、按考点逐条背诵的读者
阅读建议
- 每读一章先合上书自己想方案,再对照作者的推导,最后才看习题答案。
- 习题质量高于正文,建议至少精做“基础”与“性能”两部分的核心题目。
- 配合一本算法教材(如《算法导论》)对照阅读,把书中的直觉落成严谨分析。
- 读完后挑选书中一个案例,用自己熟悉的语言重写并做性能实测,检验理解。
出版社简介
人民邮电出版社
中国 · 成立于 1953 年
人民邮电出版社以科技、计算机与信息通信类图书见长,并由此延伸至摄影、艺术、软件学习与励志成长等门类,形成较为多元的出版方向。库内图书既涵盖《重构与模式(修订版)》《华为交换机学习指南(第二版)》等计算机与通信技术读物,也收录《小王子(中英法彩绘典藏纪念版)》《了不起的盖茨比》《假如给我三天光明》等双语典藏类作品;《北京十年:1980-1990》与《鬼刀 WLOP个人插画作品集》则体现其在摄影与艺术领域的布局。作者资源包括安东尼·圣埃克苏佩里、海伦·凯勒、Joshua Kerievsky、王达、张兆增与WLOP等。
目录
- 前言
- 第一部分 基础
- 第1章 开篇
- 第2章 啊哈!算法
- 第3章 数据决定程序结构
- 第4章 编写正确的程序
- 第5章 编程小事
- 第二部分 性能
- 第6章 程序性能分析
- 第7章 粗略估算
- 第8章 算法设计技术
- 第9章 代码调优
- 第10章 节省空间
- 第三部分 应用
- 第11章 排序
- 第12章 取样问题
- 第13章 搜索
- 第14章 堆
- 第15章 字符串
- 第1版跋
- 第2版跋
- 附录A 算法分类
- 附录B 估算测试
- 附录C 时空开销模型
- 附录D 代码调优法则
- 附录E 用于搜索的C++类
- 部分习题提示
- 部分习题答案
常见问题
这本书和《编程珠玑(续)》是什么关系?
《编程珠玑》与《编程珠玑(续)》是姊妹篇,都源自本特利的专栏文章。本书侧重算法选择与性能问题,《续》则更多涉及取样、数值算法、关联数组、性能监控与估算等实用技巧,两者可以分开读。
没有C或C++基础能读吗?
可以读懂大部分思想,但书中代码示例多用C/C++,涉及指针、数组与内存布局的片段会读得吃力。若完全不懂C系语言,建议先补一点基础语法,或跳过代码细节专看推导过程。
这本书适合准备算法面试吗?
有帮助但不对口。它培养的是分析问题、估算复杂度、优化实现的能力,而不是题型模板。面试刷题还需另配题解类书籍,本书更适合作为底层的思维训练。
第2版和第2版·修订版有什么区别?
第2版由人民邮电出版社2008年出版(ISBN 9787115179289),是流传最广的版本;第2版·修订版在此基础上有修订与补充,页数与定价不同,选购时可按ISBN区分,内容主体一致。
读完大概需要多久?
泛读一两周即可通览,但认真做题、逐章推演通常需要两三个月甚至更久。书不厚,难点在思考而非阅读速度,建议按章节留出足够消化时间。
读者评论
查询本书
本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。