6. 较为复杂的经典算法

本章所述均为较为复杂的经典算法,也是竞赛考试的常考模版算法。本章所述的经典算法往往会用到一些较为复杂的数据结构,用到分治、递归、动态规划等算法设计方法,也会用到一些较为精巧的编程技巧。

学习这些算法,一方面是为了学会编写相应的程序,但更重要的是要学会设计和实现这些算法的思路。既要深入理解这些算法及其背后的数学原理,又要弄懂它们的C++语言实现技巧。既要会用、会编写这些算法的程序,又要会灵活应用在实际问题中,更要会根据实际需要改造甚至改进这些算法,根据实际问题自己设计出类似的算法并用C++语言实现。

本章分为6节,共有以下内容:

  1. 经典数值算法

  2. 经典统计算法

    • 锦标赛算法

    • k位数算法

    • 数据的有序性检验

    • 数据的相关性检验

  3. 经典字符串算法

    • 后缀树、后缀排序

    • 马拉车算法

  4. 经典排序算法

    • 快速排序

    • 归并排序

    • 堆排序

    • 索引树

  5. 经典搜索算法

    • A*搜索

    • 启发式搜索

    • 束搜索

  6. 经典组合算法

    • 任意组合的生成

    • 任意排列的生成