第1部分 算法分析与程序设计基础
第1章 算法的基本概念
1.1 算法的基本概念
1.1.1 算法的特征
1.1.2 算法的4个标准
1.1.3 算法的描述形式
1.2 算法复杂性分析框架
1.2.1 增长次数
1.2.2 渐进符号
1.2.3 时间复杂度
1.2.4 空间复杂度
本章 小结
课后习题
第2章 C++算法程序设计基础
2.1 C++语言概述
2.1.1 C++语言的优势
2.1.2 C++语言的内容
2.1.3 编程工具
2.2 c++程序结构初步
2.2.1 预处理指示符初步
2.2.2 注释
2.2.3 基本输入/输出
2.3 使用c++语言编写简单代码
2.3.1 面向过程的C语言
2.3.2 面向过程的C++语言
2.3.3 面向对象的C++语言
2.4 C++面向对象基础
2.4.1 数据成员
2.4.2 成员函数
2.4..3 类对象成员的访问
2.4..4 类的访问限制
2.4.5 动态内存分配
2.4.6 C++程序内存分配
2.5 构造函数和析构函数
2.5.1 构造函数的概念
2.5.2 析构函数的概念
2.5.3 带参数的构造函数
2.5.4 重载构造函数
2.6 类中的this指针
2.7 类中的const修饰符
2.7.1 常对象
2.7.2 常成员函数
2.7.3 常数据成员
2.8 模板的基本概念
2.8.1 使用模板的必要性
2.8.2 模板的分类
2.9 函数模板
2.9.1 函数模板的定义
2.9.2 使用函数模板
2.9.3 函数模板的重载
2.10类模板
2.10.1 类模板的定义
2.10.2 使用类模板
2.11继承的基本概念
2.11.1 继承的必要性
2.11.2 继承的实现方式
2.11.3 继承中的静态数据成员
2.12基类和派生类的关系
2.12.1 基类指针
2.12.2 继承下的构造函数和析构函数
2.12.3 重写基类成员
2.12.4 调用基类成员函数
2.13详解protected关键字
2.14保护继承与私有继承
2.14.1 公有继承
2.14.2 私有继承
2.14.3 保护继承
本章 小结
课后习题
第2部分算法设计数据结构基础
第3章 线性数据结构基础
3.1 抽象数据类型
3.2 线性表基础
3.2.1 线性表定义及特点
3.2.2 顺序表
3.2.3 链表
3.2.4 教组与链表性能比较
3.3 栈与队列基础
3.3.1 栈
3.3.2 队列
本章 小结
课后习题
第4章 非线性数据结构基础
4.1 树与二叉树
4.1.1 树的基本概念
4.1.2 二叉树
4.2 树与二叉树的存储结构
4.2.1 二叉树的存储结构
4.2.2 树的存储结构
4.2.3 二叉树的遍历
4.3图
4.3.1 图的基本概念
4.3.2 图的存储结构
本章 小结
课后习题
第5章 排序与搜索算法基础
5.1 排序算法的基本概念
5.1.1 排序的分类
5.1.2 排序算法的评价标准
5.2 简单排序算法
5.2.1 插入排序
5.2.2 选择排序
5.2.3 冒泡排序
5.3 快速排序
5.4 堆排序
5.5 归并排序
5.6 希尔排序
5.7 线性表查找
5.7.1 顺序查找
5.7.2 二分查找
5.8 树与图的搜索
5.8.1 二叉排序树搜索
5.8.2 B一树
5.8.3 广度优先搜索
5.8.4 图的深度优先搜索
本章 小结
课后习题
第3部分 典型算法分析与问题求解
第6章 递归与分治法算法设计
6.1 递归法
6.1.1递归算法的特性
6.1.2 递归的执行过程
6.2 递归法应用举例
6.2.1 汉诺塔问题求解
6.2.2 斐波那契数列问题求解
6.2.3 八皇后问题
6.3 分治法
6.3.1 问题提出
6.3.2 分治法概述
6.4 分治法应用举例
本章 小结
课后习题
第7章 贪心算法设计
7.1 贪心法
7.1.1 问题提出
7.1.2 贪心法的基本思路
7.2 贪心法应用举例
7.2.1 背包问题
7.2.2 哈夫曼编码
7.2.3 单源最短路径
7.2.4 最小生成树
本章 小结
第8章 动态规划算法设计
第9章 回溯算法设计
第10章 分支界算法设计
附录A