第1章 软件开发 1
1.1 开发活动 1
1.2 规格说明 2
1.3 设计 3
1.4 模块化 6
1.5 选择编程语言 7
1.6 程序开发 8
1.7 确认 8
1.8 性能分析和测量 11
1.9 文档 11
1.10 维护 12
1.11 增强 12
1.12 计算机辅助 12
1.13 小结 13
1.14 参考文献 13
第2章 规格说明 15
2.1 介绍 15
2.2 数学问题 15
2.3 编程语言 17
2.4 电子数据表 23
2.5 数据库管理 26
2.6 小结 28
2.7 参考文献 28
2.8 练习 28
第3章 设计 31
3.1 介绍 31
3.2 性能 31
3.3 菜单 32
3.4 命令格式 38
3.5 联机帮助 41
3.6 设计例子 43
3.6.1 文本处理器 43
3.6.2 C编程环境 48
3.6.3 电子数据表 50
3.7 参考文献 54
3.8 练习 55
第4章 模块化 57
4.1 介绍 57
4.2 文本编辑器 60
4.3 电子数据表 62
4.4 数据库管理 62
4.5 程序 67
4.6 小结 69
4.7 参考文献 69
4.8 练习 69
第5章 程序美学 72
5.1 程序的魅力 72
5.2 选择名字 76
5.3 注释 78
5.4 程序布局 82
5.5 语句组成 84
5.6 选择控制语句 85
5.6.1 使用if语句 86
5.6.2 使用while语句 86
5.6.3 使用do-while语句 88
5.6.4 使用for语句 88
5.6.5 使用switch语句 89
5.6.6 使用goto语句 91
5.7 通用性 92
5.8 输入/输出格式 93
5.9 参考文献 94
5.10 练习 94
第6章 防错性程序设计 97
6.1 介绍 97
6.2 输入错误 97
6.3 数值误差 99
6.3.1 介绍 99
6.3.2 表示误差 99
6.3.3 算术误差 104
6.3.4 与数值误差同在 105
6.4 边界错误 108
6.5 混合原因 113
6.6 参考文献 114
6.7 练习 115
第7章 逐步求精法 117
7.1 介绍 117
7.2 迷宫老鼠 117
7.3 排序 128
7.4 网 131
7.5 装配线顺序 139
7.6 参考文献 144
7.7 练习 145
第8章 程序的正确性 148
8.1 介绍 148
8.2 数学归纳法 149
8.2.1 证明方法 149
8.2.2 递归程序 153
8.2.3 循环程序 156
8.2.4 循环不变式 159
8.3 判定转换方法 160
8.4 参考文献 173
8.5 练习 173
第9章 测试 178
9.1 介绍 178
9.2 模块测试策略 179
9.2.1 Big Bang测试 179
9.2.2 Big Bang集成测试 180
9.2.3 增量测试 183
9.3 产生测试数据 185
9.3.1 介绍 185
9.3.2 黑盒法 185
9.3.3 白盒法 196
9.3.4 小结 201
9.4 调试 202
9.5 参考文献 202
9.6 练习 203
第10章 性能分析 205
10.1 介绍 205
10.2 空间复杂度 206
10.3 时间复杂度 212
10.4 渐近符号(ОΩΘо) 220
10.5 实际复杂度 227
10.6 参考文献 228
10.7 练习 229
第11章 性能测量 232
11.1 介绍 232
11.2 函数调用开销 238
11.3 递归和循环 238
11.4 边界测试 240
11.5 编程效率 244
11.6 算法比较 245
11.6.1 简介 245
11.6.2 实例:插入排序和冒泡排序 248
11.7 生成测试数据 253
11.8 练习 255
第12章 数据结构 257
12.1 介绍 257
12.2 基于公式的表示 258
12.2.1 介绍 258
12.2.2 线性列表 258
12.2.3 栈 261
12.2.4 队列 263
12.2.5 搜索表 267
12.3 链接表示法 270
12.3.1 介绍 270
12.3.2 线性列表 270
12.3.3 性能测量 277
12.3.4 栈 280
12.3.5 队列 281
12.3.6 双队列 284
12.3.7 搜索表 286
12.4 间接寻址 289
12.5 比较 292
12.6 模拟指针 292
12.7 参考文献 296
12.8 练习 296
第13章 高级数据结构 300
13.1 二元树 300
13.1.1 介绍 300
13.1.2 性质 300
13.1.3 表示法 302
13.1.4 函数 304
13.2 堆 307
13.3 二叉查找树 316
13.4 Union-Find(并查)树 321
13.5 图 327
13.5.1 定义 327
13.5.2 应用 328
13.5.3 性质 331
13.5.4 表示法 332
13.5.5 函数 335
13.6 参考文献 340
13.7 练习 340
第14章 算法设计方法 344
14.1 介绍 344
14.2 贪心法 345
14.3 分治法 350
14.4 动态规则 361
14.5 回溯法 364
14.6 分枝-限界法 366
14.7 启发法 368
14.7.1 介绍 368
14.7.2 贪心启发 368
14.7.3 交换方法 373
14.7.4 性能测试 375
14.7.5 蒙特卡洛改进法 376
14.8 参考文献 378
14.9 练习 379
附录A 曲线拟合 382