编程珠玑:算法与程序性能分析

需积分: 0 0 下载量 74 浏览量 更新于2024-07-01 收藏 3.76MB PDF 举报
"编程珠玑(第2版·修订版)1" 本书《编程珠玑(第2版·修订版)》是一本深入探讨编程实践与算法设计的经典之作。作者通过一系列精心挑选的问题和实例,引导读者理解编程的核心概念,提高程序设计的效率,并关注程序的性能优化。 第一部分基础: 这部分主要介绍了编程的基本理念和方法。第1章讨论了如何准确地描述问题和设计程序,强调了问题理解的重要性。第2章通过介绍二分搜索和排序等常见算法,展示了算法在解决问题中的威力。第3章探讨了数据结构对程序结构的影响,强调了结构化数据处理的重要性。第4章和第5章分别讲述了如何编写正确无误的程序和编程过程中的一些细节,如测试、断言和自动测试,以及如何从伪代码转化为实际代码。 第二部分性能: 这部分集中讨论了程序性能分析和优化。第6章通过实例分析,揭示了性能评估的方法。第7章介绍了粗略估算技巧,帮助开发者预测程序性能。第8章介绍了算法设计技术,包括分治法和扫描算法,以提高算法效率。第9章讲解了代码调优的策略,包括急救方案和大手术式的深度优化。第10章关注节省空间,讨论了减少数据和代码空间的技术。 第三部分应用: 这部分提供了具体的编程应用场景。第11章详细讨论了排序算法,从插入排序到快速排序的改进。第12章解决了取样问题,展示了设计解决方案的过程。第13章涵盖了搜索问题,从线性结构到二分搜索树,提供了不同类型的搜索算法。 书中的每章都包含原理、习题和深入阅读推荐,鼓励读者深入思考并扩展知识领域。通过这本书,读者不仅可以学习到编程的实用技巧,还能掌握如何分析问题、设计高效算法和优化程序性能的高级方法。
2017-11-01 上传
第一部分 基础 第1章 开篇 3 1.1 一次友好的对话 3 1.2 准确的问题描述 4 1.3 程序设计 4 1.4 实现概要 5 1.5 原理 6 1.6 习题 7 1.7 深入阅读 9 第2章 啊哈! 算法 11 2.1 三个问题 11 2.2 无处不在的二分搜索 12 2.3 基本操作的威力 13 2.4 排序 15 2.5 原理 16 2.6 习题 17 2.7 深入阅读 18 2.8 变位词程序的实现(边栏) 18 第3章 数据决定程序结构 21 3.1 一个调查程序 21 3.2 格式信函编程 23 3.3 一组示例 25 3.4 结构化数据 26 3.5 用于特殊数据的强大工具 27 3.6 原理 28 3.7 习题 29 3.8 深入阅读 30 第4章 编写正确的程序 33 4.1 二分搜索的挑战 33 4.2 编写程序 34 4.3 理解程序 36 4.4 原理 38 4.5 程序验证的角色 39 4.6 习题 40 4.7 深入阅读 42 第5章 编程小事 43 5.1 从伪代码到C程序 43 5.2 测试工具 44 5.3 断言的艺术 46 5.4 自动测试 48 5.5 计时 49 5.6 完整的程序 50 5.7 原理 51 5.8 习题 51 5.9 深入阅读 52 5.10 调试(边栏) 53 第二部分 性能 第6章 程序性能分析 57 6.1 实例研究 57 6.2 设计层面 59 6.3 原理 60 6.4 习题 61 6.5 深入阅读 61 第7章 粗略估算 63 7.1 基本技巧 64 7.2 性能估计 66 7.3 安全系数 68 7.4 Little定律 69 7.5 原理 70 7.6 习题 70 7.7 深入阅读 71 7.8 日常生活中的速算(边栏) 72 第8章 算法设计技术 73 8.1 问题及简单算法 73 8.2 两个平方算法 74 8.3 分治算法 75 8.4 扫描算法 77 8.5 实际运行时间 77 8.6 原理 79 8.7 习题 80 8.8 深入阅读 81 第9章 代码调优 83 9.1 典型的故事 83 9.2 急救方案集锦 84 9.3 大手术——二分搜索 88 9.4 原理 91 9.5 习题 92 9.6 深入阅读 94 第10章 节省空间 95 10.1 关键在于简单 95 10.2 示例问题 96 10.3 数据空间技术 99 10.4 代码空间技术 101 10.5 原理 103 10.6 习题 104 10.7 深入阅读 105 10.8 巨大的节省(边栏) 105 第三部分 应用 第11章 排序 109 11.1 插入排序 109 11.2 一种简单的快速排序 110 11.3 更好的几种快速排序 113 11.4 原理 115 11.5 习题 116 11.6 深入阅读 117 第12章 取样问题 119 12.1 问题 119 12.2 一种解决方案 120 12.3 设计空间 121 12.4 原理 123 12.5 习题 124 12.6 深入阅读 125 第13章 搜索 127 13.1 接口 127 13.2 线性结构 129 13.3 二分搜索树 132 13.4 用于整数的结构 134 13.5 原理 135 13.6 习题 136 13.7 深入阅读 137 13.8 一个实际搜索问题(边栏) 137 第14章 堆 141 14.1 数据结构 141 14.2 两个关键函数 143 14.3 优先级队列 145 14.4 一种排序算法 148 14.5 原理 150 14.6 习题 150 14.7 深入阅读 152 第15章 字符串 153 15.1 单词 153 15.2 短语 156 15.3 生成文本 158 15.4 原理 163 15.5 习题 163 15.6 深入阅读 164 第1版跋 165 第2版跋 167 附录A 算法分类 169 附录B 估算测试 173 附录C 时空开销模型 175 附录D 代码调优法则 181 附录E 用于搜索的C++类 187 部分习题提示 191 部分习题答案 195 索引 221