第2章学习笔记:排序、二分与分治
课程笔记把有序性变成边界单调性,并用分治控制子问题。
关联:章节 第2章 排序、二分与分治
第2章笔记:排序、二分与分治
目标
把有序性变成边界单调性,并用分治控制子问题。
七课依赖
- 排序稳定性与比较模型:围绕排序稳定性与比较模型先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
- 归并排序的分治证明:围绕归并排序的分治证明先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
- 逆序对与跨区间贡献:围绕逆序对与跨区间贡献先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
- 二分查找的区间不变量:围绕二分查找的区间不变量先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
- 二分答案与可行性判定:围绕二分答案与可行性判定先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
- 分治递推与主定理边界:围绕分治递推与主定理边界先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
- 最近点对与分治复盘:围绕最近点对与分治复盘先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
复杂度与适用条件表
| 算法对象 | 不变量/复杂度来源 | 使用边界 |
|---|---|---|
| 排序稳定性与比较模型 | 围绕排序稳定性与比较模型先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
| 归并排序的分治证明 | 围绕归并排序的分治证明先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
| 逆序对与跨区间贡献 | 围绕逆序对与跨区间贡献先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
| 二分查找的区间不变量 | 围绕二分查找的区间不变量先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
| 二分答案与可行性判定 | 围绕二分答案与可行性判定先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
| 分治递推与主定理边界 | 围绕分治递推与主定理边界先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
| 最近点对与分治复盘 | 围绕最近点对与分治复盘先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 | 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。 |
复盘
每题保存暴力、优化、证明、四组边界测试和首个WA输入;一周后换数据重做。