程序填空题:二分搜索(分治法)
二分搜索(分治法)。
```c++
#include
#include
#define N 1000
using namespace std;
int binsearch(int A[],int key,int low,int high)
{ int mid;
if(low<=high)
{
@@[mid=(low+high)/2](2);
if(key @@[return binsearch(A,key,low,mid-1)](2);
else if(key>A[mid])
@@[return binsearch(A,key,mid+1,high)](2);
else
return mid;
}
else
return -1;
}
int main()
{
int n,i,A[N],key;
cin>>n;
for(i=0;i cin>>A[i];
cin>>key;
cout< return 0;
}
```
### 输入样例:
第一行输入一个数n,第二行输入n个数,第三行输入要查的值。
```in
12
11 14 23 25 68 78 84 97 155 201 310 479
97
```
### 输出样例:
输出key在序列中的位置。
```out
7
```
答案:
第1空:mid=(low+high)/2
第2空:return binsearch(A,key,low,mid-1)
第3空:return binsearch(A,key,mid+1,high)
```c++
#include
#include
#define N 1000
using namespace std;
int binsearch(int A[],int key,int low,int high)
{ int mid;
if(low<=high)
{
@@[mid=(low+high)/2](2);
if(key @@[return binsearch(A,key,low,mid-1)](2);
else if(key>A[mid])
@@[return binsearch(A,key,mid+1,high)](2);
else
return mid;
}
else
return -1;
}
int main()
{
int n,i,A[N],key;
cin>>n;
for(i=0;i
cin>>key;
cout<
}
```
### 输入样例:
第一行输入一个数n,第二行输入n个数,第三行输入要查的值。
```in
12
11 14 23 25 68 78 84 97 155 201 310 479
97
```
### 输出样例:
输出key在序列中的位置。
```out
7
```
答案:
第1空:mid=(low+high)/2
第2空:return binsearch(A,key,low,mid-1)
第3空:return binsearch(A,key,mid+1,high)