一,master公式

其中:
T(N)——母问题数据量级别为N
T(N/b)——子问题数据量级别均为N/b
a——子问题被调用了多少次
O(N^d)——除子问题外其他算法的时间复杂度
二,使用条件
子问题等规模
三,答案归类

四,示例
求数组中最大元素的函数:
int process(int arr[],int l,int r)
{
if (r == l)
{
return arr[l];
}
int mid = l + ((r - l) >>1 );
int lmax = process(arr, l, mid);//子问题1时间复杂度为N/2
int rmax = process(arr, mid+1, r);//子问题2时间复杂度为N/2
return (lmax > rmax) ? lmax : rmax;
}
该函数中
子问题时间复杂度均为N/2——a=2
被调用两次——b=2
除子问题外其他过程时间复杂度为1——d=0
带入公式即可求解。
本文探讨了递归算法中,通过Master公式计算总时间复杂度的方法,以求解子问题规模相同、调用次数及非子问题部分时间复杂度的情况,以求解数组中最大元素函数为例进行详细解释。
7844

被折叠的 条评论
为什么被折叠?



