#include<iostream>
using namespace std;
int BinarySearch(int* arr, int minSub, int maxSub, int num) {
if (minSub > maxSub)return -1;
int mid = (minSub + maxSub) / 2;
if (num == arr[mid]) {
return mid;//找到num时直接返回
}
else if (num < arr[mid]) {//如果15小于下标mid就返回
return BinarySearch(arr, minSub, mid - 1, num);
}
else {
return BinarySearch(arr, mid + 1, maxSub, num);
}
}
int main1(void) {
int girls[10] = { 5,7,8,9,10,11,12,13,14,15 };
int index = BinarySearch(girls, 0, 9, 15);
cout << "index=" << index << endl;
system("pause");
return 0;
}
两部分组成
分(divide):递归解决较小的问题 治(conquer):然后从子问题的解构建原问题的解
三个步骤
1、分解(Divide):将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题; 2、解决(Conquer):若子问题规模较小而容易被解决则直接解决,否则递归地解各个子问题; 3、合并(Combine):将各个子问题的解合并为原问题的解。