6. 较为复杂的经典算法¶
本章所述均为较为复杂的经典算法,也是竞赛考试的常考模版算法。本章所述的经典算法往往会用到一些较为复杂的数据结构,用到分治、递归、动态规划等算法设计方法,也会用到一些较为精巧的编程技巧。
学习这些算法,一方面是为了学会编写相应的程序,但更重要的是要学会设计和实现这些算法的思路。既要深入理解这些算法及其背后的数学原理,又要弄懂它们的C++语言实现技巧。既要会用、会编写这些算法的程序,又要会灵活应用在实际问题中,更要会根据实际需要改造甚至改进这些算法,根据实际问题自己设计出类似的算法并用C++语言实现。
本章分为6节,共有以下内容:
- 经典数值算法
- 经典统计算法
- 锦标赛算法
- k位数算法
- 数据的有序性检验
- 数据的相关性检验
- 经典字符串算法
- 后缀树、后缀排序
- 马拉车算法
- 经典排序算法
- 快速排序
- 归并排序
- 堆排序
- 索引树
- 经典搜索算法
- A*搜索
- 启发式搜索
- 束搜索
- 经典组合算法
- 任意组合的生成
- 任意排列的生成