2. 主方法(Master Method)
2.1 主方法介绍
为了更好的计算递归式的时间复杂度,引入了主方法。
2.2 主方法的证明
三个参数可知,每次划分时,子问题的个数是原问题的a倍,而大小是原问题的1/b,
2.3 简单例子
以Merge Sort为例,每次分为两个子问题,每个子问题是前一个问题size的一半,同时每个子问题解决时间长度不会超过n,则a=2,b=2,d=1。由主方法可知T(n)=O(nlogn).
利用Gauss递归整数算法,a=3,b=2, d=1.
有序二叉树的搜索,a=1,b=2,d=0.
2.4 快速排序(QuickSort)
快排是具有实践意义和稳定性能的算法(平均时间为O(nlogn)).
总体算法描述(Hoorecirca 1961):
QuickSort(array A, length n):
--if n==1 return
--p=ChoosePivot(A,n)
--Partition A around p(Partition(A,p))
--recursively sort 1st part
--recursively sort 2nd part
Partition(A,p)描述:(Partition就是要找打Pivot元素的位置,左小,右大)
--这里假设A的范围为L到R
--swap A[L] and A[P]
--i=L+1
--for j=L+1 to R
--if A[j]<p
--swap A[j] and A[i]
--i=i+1
--swap A[L] and A[i-1]
![](https://img-my.csdn.net/uploads/201207/26/1343290124_1278.png)