|
內容簡介: |
本书采用程序员*广泛采用的面向对象C++语言来描述数据结构和算法,并把数据结构原理和算法分析技术有机地结合在一起,系统介绍了各种类型的数据结构及排序、检索的各种方法。作者非常注意对每一种数据结构的不同存储方法及有关算法进行分析比较。书中还引入了一些比较高级的数据结构与先进的算法分析技术,并介绍了可计算性理论的一般知识。书中分别给出了C++实现方法和伪码实现方法,便于读者根据情况选择。本书作者维护的网站上可下载相关代码、编程项目和辅助练习资料。
|
目錄:
|
目录
第一部分预 备 知 识
第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.6Huffman编码树
5.7深入学习导读
5.8习题
5.9项目设计
第6章树
6.1树的定义与术语
6.2父指针表示法
6.3树的实现
6.4K叉树
6.5树的顺序表示法
6.6深入学习导读
6.7习题
6.8项目设计
第三部分排序与检索
第7章内排序
7.1排序术语及记号
7.2三种代价为Θn2的排序算法
7.3Shell排序
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.2ISAM
10.3基于树的索引
10.42-3树
10.5B树
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.1Trie结构
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实用函数
参考文献
词汇表
|
|