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