Jon Bentley 世界知名的计算机科学家,被誉为影响算法发展的十位大师之一。他先后任职于卡内基-梅隆大学(1976~1982)、贝尔实验室(1982~2001)和Avaya实验室(2001年到今)。在卡内基-梅隆大学担任教授期间,他培养了包括Tcl语言设计者John Ousterhout、Java语言设计者James Gosling、《算法导论》作者之一Charles E. Leiserson在内的许多计算机科学大家。2004年荣获Dr. Dobb's程序设计卓 越奖。
目录
Part I:PRELIMINARIES
第一部分 基础
Column 1:Cracking the Oyster
第1章 开篇
A Friendly Conversation/一次友好的对话
Precise Problem Statement/准确的问题描述
Program Design/程序设计
Implementation Sketch/实现概要
Principles/原理
Problems/习题
Further Reading/深入阅读
Column 2:Aha! Algorithms 11
第2章 啊哈!算法
Three Problems/三个问题
Ubiquitous Binary Search/无处不在的二分搜索
The Power of Primitives/基本操作的威力
Getting It Together:Sorting/排序
Principles/原理
Problems/习题
Further Reading/深入阅读
Implementing an Anagram Program/变位词程序的实现
Column 3:Data Structures Programs
第3章 数据决定程序结构
A Survey Program/一个调查程序
Form-Letter Programming/格式信函编程
An Array of Examples/一组示例
Structuring Data/结构化数据
Powerful Tools for Specialized Data/用于特殊数据的强大工具
Principles/原理
Problems/习题
Further Reading/深入阅读
Column 4:Writing Correct Programs
第4章 编写正确的程序
The Challenge ofBinary Search/二分搜索的挑战
Writing the Program/编写程序
Understanding the Program/理解程序
Principles/原理
The Roles ofProgram Verification/程序验证的角色
Problems/习题
Further Reading/深入阅读
Column 5:A Small Matter of Programming
第5章 编程小事
From Pseudocode to C/从伪代码到C程序
ATest Harness/测试工具
The Art ofAssertion/断言的艺术
Auto—mated Testing/自动测试
Timing/计时
The Complete Program/完整的程序
Principles/原理
Problems/习题
Further Reading/深入阅读
Debugging/调试
Part II:PERFORMANCE
第二部分 性能
Column 6:Perspective on Performance
第6章 程序性能分析
ACase Study/实例研究
Design Levels/设计层面
Principles/原理
Problems/习题
Further Reading/深入阅读
Column 7:The Back of the Envelope
第7章 粗略估算
Basic Skills/基本技巧
Performance Estimates/性能估计
Safety Factors/安全系数
Little’s Law/Little定律
Principles/原理
Problems/习题
Further Reading/深入阅读
Quick Calculations in Everyday Life/日常生活中的速算
Column 8:Algorithm Design Techniques
第8章 算法设计技术
The Problem and a Simple Algorithm/问题及简单算法
Two Quadratic Algorithms/两个平方算法
A Divide-and-Conquer Algorithm/分治算法
A Scanning Algorithm/扫描算法
What Does It Matter?/实际运行时间
Principles/原理
Problems/习题
Further Reading/深入阅读
Column 9:Code Tuning
第9章 代码调优
ATypical Story/典型的故事
A First Aid Sampler/急救方案集锦
Major Surgery--Binary Search/大手术——二分搜索
Principles/原理
Problems/习题
Further Reading/深入阅读
Column 10:Squeezing Space
第10章 节省空间
The Key--Simplicity/关键在于简单
An Illustrative Problem/示例问题
Techniques for Data Space/数据空间技术
Techniques for Code Space/代码空间技术
Principles/原理
Problems/习题
Further Reading/深入阅读
A Big Squeeze/巨大的节省
Part 111:THE PRODUCT
第三部分 应用
Column 1l:Sorting
第11章 排序
Insertion Sort/插入排序
A Simple Quicksort/一种简单的快速排序
Better Quicksorts/ 好的几种快速排序
Principles/原理
Problems/习题
Further Reading/深入阅读
Column 12:A Sample Problem
第12章 取样问题
TheProblem/问题
One Solution/一种解决方案
The Design Space/设计空间
Principles/原理
Problems/习题
Further Reading/深入阅读
Column 13:Searching
第13章 搜索
The Interface/接口
Linear stmctures/线性结构
Binary Search Trees/二分搜索树
Structures for Integers/用于整数的结构
Principles/原理
Problems/习题
Further Reading/深入阅读
A Real Searching Problem/一个实际搜索问题
Column 14:Heaps
第14章 堆
TheData Structure/数据结构
Two Critical Functions/两个关键函数
Priority Queues/优先级队列
A Sorting Algorithm/一种排序算法
Principles/原理
Problems/习题
Further Reading/深入阅读
Column 15:Strings of Pearls
第15章 字符串
Words/单词
Phrases/短语
Generating Text/生成文本
Principles/原理
Problems/习题
Further Reading/深入阅读
Epilog to the First Edition
版跋
Epilog to the Second Edition
第2版跋
Appendix l:A Catalog ofAlgorithms
附录A 算法分类
Appendix 2:An Estimation Quiz
附录B 估算测试
Appendix 3:Cost Models for Time and Space
附录C 时空开销模型
Appendix 4:Rules for Code Tuning
附录D 代码调优法则
Appendix 5:C++Classes for Searching
附录E 用于搜索的C++类
Hints for Selected Problems
部分习题提示
Solutions to Selected Problems
部分习题答案