第一章 算法基础概念 #
1.1 算法定义 #
- 1.1.1 算法的基本含义
- 1.1.2 算法的历史发展
- 1.1.3 算法与程序的区别
- 1.1.4 算法在计算机科学中的地位
1.2 算法的基本特征 #
- 1.2.1 有穷性
- 1.2.2 确定性
- 1.2.3 输入项
- 1.2.4 输出项
- 1.2.5 可行性
第二章 算法表示方法 #
2.1 自然语言描述 #
- 2.1.1 自然语言描述的优势与局限
- 2.1.2 自然语言描述的基本规范
2.2 流程图表示法 #
- 2.2.1 流程图基本符号
- 2.2.2 流程图绘制规则
- 2.2.3 流程图实例分析
2.3 伪代码表示法 #
- 2.3.1 伪代码语法规范
- 2.3.2 伪代码与编程语言的关系
- 2.3.3 伪代码实例解析
2.4 程序设计语言表示 #
- 2.4.1 常见编程语言中的算法实现
- 2.4.2 语言特性对算法实现的影响
第三章 算法分类体系 #
3.1 按设计方法分类 #
- 3.1.1 分治算法
- 3.1.2 贪心算法
- 3.1.3 动态规划算法
- 3.1.4 回溯算法
- 3.1.5 分支限界法
3.2 按应用领域分类 #
- 3.2.1 排序算法
- 3.2.2 搜索算法
- 3.2.3 图算法
- 3.2.4 数值算法
- 3.2.5 字符串算法
3.3 按计算复杂度分类 #
- 3.3.1 多项式时间算法
- 3.3.2 指数时间算法
- 3.3.3 P类与NP类问题
第四章 算法性能分析 #
4.1 时间复杂度分析 #
- 4.1.1 时间复杂度的定义
- 4.1.2 大O表示法
- 4.1.3 常见时间复杂度类型
- 4.1.4 最坏、最好与平均情况分析
4.2 空间复杂度分析 #
- 4.2.1 空间复杂度的概念
- 4.2.2 空间复杂度的计算方法
- 4.2.3 时间与空间的权衡
4.3 算法效率比较 #
- 4.3.1 渐进效率分析
- 4.3.2 实际运行效率测试
- 4.3.3 算法选择标准
第五章 算法正确性验证 #
5.1 算法正确性概念 #
- 5.1.1 部分正确性
- 5.1.2 完全正确性
- 5.1.3 终止性证明
5.2 验证方法 #
- 5.2.1 数学归纳法
- 5.2.2 循环不变式
- 5.2.3 断言验证法
5.3 测试与调试 #
- 5.3.1 测试用例设计
- 5.3.2 边界条件测试
- 5.3.3 调试技巧与方法
第六章 算法设计原则 #
6.1 基本设计原则 #
- 6.1.1 模块化原则
- 6.1.2 抽象原则
- 6.1.3 逐步求精原则
6.2 优化策略 #
- 6.2.1 时间优化方法
- 6.2.2 空间优化方法
- 6.2.3 代码可读性与效率平衡
6.3 设计模式应用 #
- 6.3.1 常用算法设计模式
- 6.3.2 模式选择标准
- 6.3.3 模式组合使用
第七章 算法应用实例 #
7.1 经典算法实例 #
- 7.1.1 排序算法实例
- 7.1.2 搜索算法实例
- 7.1.3 图算法实例
7.2 实际应用场景 #
- 7.2.1 数据库系统中的算法应用
- 7.2.2 人工智能中的算法应用
- 7.2.3 网络通信中的算法应用
7.3 算法发展趋势 #
- 7.3.1 并行算法发展
- 7.3.2 量子算法前景
- 7.3.3 机器学习算法演进