第一部分 预备知识
第1章 数据结构和算法
1.1 数据结构的原则
1.2 抽象数据类型和数据结构
1.3 设计模式
1.4 问题、算法和程序
1.5 深入学习导读
1.6 习题
第2章 数学预备知识
2.1 集合和关系
2.2 常用数学术语
2.3 对数
2.4 级数求和与递归
2.5 递归
2.6 数学证明方法
2.7 估计
2.8 深入学习导读
2.9 习题
第3章 算法分析
3.1 概述
3.2 最佳、最差和平均情况
3.3 换一台更快的计算机,还是换一种更快的算法
3.4 渐近分析
3.5 程序运行时间的计算
3.6 问题的分析
3.7 容易混淆的概念
3.8 多参数问题
3.9 空间代价
3.10 加速你的程序
3.11 实证分析
3.12 深入学习导读
3.13 习题
3.14 项目设计
第二部分 基本数据结构
第4章 线性表、栈和队列
4.1 线性表
4.2 栈
4.3 队列
4.4 字典
4.5 深入学习导读
4.6 习题
4.7 项目设计
第5章 二叉树
5.1 定义及主要特性
5.2 遍历二叉树
5.3 二叉树的实现
5.4 二叉检索树
5.5 堆与优先队列
5.6 Huffman编码树
5.7 深入学习导读
5.8 习题
5.9 项目设计
第6章 树
6.1 树的定义与术语
6.2 父指针表示法
6.3 树的实现
6.4 K叉树
6.5 树的顺序表示法
6.6 深入学习导读
6.7 习题
6.8 项目设计
第三部分 排序与检索
第7章 内排序
7.1 排序术语及记号
7.2 三种代价为Θ(n2)的排序算法
7.3 Shell排序
7.4 归并排序
7.5 快速排序
7.6 堆排序
7.7 分 配排序和基数排序
7.8 对各种排序算法的实验比较
7.9 排序问题的下限
7.10 深入学习导读
7.11 习题
7.12 项目设计
第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 习题
9.7 项目设计
第10章 索引技术
10.1 线性索引
10.2 ISAM
10.3 基于树的索引
10.4 2-3树
10.5 B树
10.6 深入学习导读
10.7 习题
10.8 项目设计
第四部分 高级数据结构
第11章 图
11.1 术语和表示法
11.2 图的实现
11.3 图的遍历
11.4 最短路径问题
11.5 最小支撑树
11.6 深入学习导读
11.7 习题
11.8 项目设计
第12章 线性表和数组高级技术
12.1 广义表
12.2 矩阵的表示方法
12.3 存储管理
12.4 深入学习导读
12.5 习题
12.6 项目设计
第13章 高级树结构
13.1 Trie结构
13.2 平衡树
13.3 空间数据结构
13.4 深入学习导读
13.5 习题
13.6 项目设计
第五部分 算法理论
第14章 分析技术
14.1 求和技术
14.2 递归关系
14.3 均摊分析
14.4 深入学习导读
14.5 习题
14.6 项目设计
第15章 下限
15.1 下限证明介绍
15.2 线性表检索的下限
15.3 查找最大值
15.4 对抗性下限证明
15.5 状态空间下限证明
15.6 找到第i大元素
15.7 优化排序
15.8 深入学习导读
15.9 习题
15.10 项目设计
第16章 算法模式
16.1 动态规划
16.2 随机算法
16.3 数值算法
16.4 深入学习导读
16.5 习题
16.6 项目设计
第17章 计算的限制
17.1 归约
17.2 难解问题
17.3 不可解问题
17.4 深入学习导读
17.5 习题
17.6 项目设计
第六部分 附录
附录A 实用函数
参考文献
词汇表