跳到正文

第2章学习笔记:排序、二分与分治

课程笔记

把有序性变成边界单调性,并用分治控制子问题。

关联:章节 第2章 排序、二分与分治

第2章笔记:排序、二分与分治

目标

把有序性变成边界单调性,并用分治控制子问题。

七课依赖

  • 排序稳定性与比较模型:围绕排序稳定性与比较模型先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 归并排序的分治证明:围绕归并排序的分治证明先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 逆序对与跨区间贡献:围绕逆序对与跨区间贡献先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 二分查找的区间不变量:围绕二分查找的区间不变量先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 二分答案与可行性判定:围绕二分答案与可行性判定先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 分治递推与主定理边界:围绕分治递推与主定理边界先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 最近点对与分治复盘:围绕最近点对与分治复盘先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。

复杂度与适用条件表

算法对象 不变量/复杂度来源 使用边界
排序稳定性与比较模型 围绕排序稳定性与比较模型先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
归并排序的分治证明 围绕归并排序的分治证明先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
逆序对与跨区间贡献 围绕逆序对与跨区间贡献先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
二分查找的区间不变量 围绕二分查找的区间不变量先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
二分答案与可行性判定 围绕二分答案与可行性判定先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
分治递推与主定理边界 围绕分治递推与主定理边界先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
最近点对与分治复盘 围绕最近点对与分治复盘先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 二分必须先证明单调谓词;递归要写终止规模与合并成本。 本课必须再检查边界输入、整数溢出、下标和不可行状态。

复盘

每题保存暴力、优化、证明、四组边界测试和首个WA输入;一周后换数据重做。