主定理

假设分治法中,递推公式如下

递推公式

Wiki上的主定理定义

CLRS上的直观解释

  1. 前一部分比较大,占主要地位
  2. 两部分差不多, 乘以 lg(n)
  3. 后一部分比较大,占主要地位

例子

wiki上的三个例子
应用

另: findKth a=1 b=2 f(n)=O(n) 根据第3条, 复杂度是 O(n)

这三个例子也都比较方便使用递归树进行解释,详细如下:
1. 折半搜索
一共lg(n) 层, 每层为 O(1)。 复杂度是 lg(n).
2. 二叉树遍历
一共lg(n) 层, 每层的操作数不一样, 第一层是1,第二层是2,第n层是2^n, 利用等比数列的知识, 可以得到复杂度是 O(n)
3. 归并排序
一共lg(n) 层, 每层为 O(n)。 复杂度是 O(n*lg(n)).

特例

出现在情况三种,先不管


RioDream
126 声望14 粉丝