分治策略:
1、将原始问题划分或归结为规模较小的子问题。
2、递归或者迭代求解每个子问题
3、将子问题的解综合得到原问题的解
注意:
1、子问题与原问题的性质完全一样
2、子问题之间可以彼此独立求解
3、递归停止时,子问题可以直接求解。
分治法的应用
1、二分检索
int binarySearch(vector<int> a,int begin,int end,int x){
int result;
int mid = (end-begin)/2;
while(begin<=end){
if(a[mid]==x){
return mid;
}else if(a[mid]>x){
end = mid-1;
mid = (end-begin)/2 + begin;
}else{
begin = mid+1;
mid = (end-begin)/2 + begin;
}
}
cout<<"没有找到"<<endl;
return -1;
}
时间复杂度分析: