#include<iostream>
using namespace std;
#define ERROR 0
#define OK 1
int n,key,mid;
int binary(int a[],int n)
{
int low=0,high=n;
while(low<=high)
{
mid=(low+high)/2;
if(key==a[mid]) return OK;
else if(key<a[mid]) high=mid-1;
else low=mid+1;
}
return ERROR;
}
int main()
{
cin >> n;
int a[n+5];
for(int i=0;i<n;i++) cin >> a[i];
cin >> key;
if(binary(a,n))
printf("The element position is %d.",mid);
else printf("The element is not exist.");
return 0;
}
下面这个好像有点不太严谨:
#include<iostream>
using namespace std;
int n,key;
int binary(int a[],int n)
{
int low=0,high=n,mid;
while(low<=high)
{
mid=(low+high)/2;
if(key==a[mid]) return mid;
else if(key<a[mid]) high=mid-1;
else low=mid+1;
}
return -1;
}
int main()
{
cin >> n;
int a[n+5];
for(int i=0;i<n;i++) cin >> a[i];
cin >> key;
if(binary(a,n)==-1)
printf("The element is not exist.");
else printf("The element position is %d.",binary(a,n));
return 0;
}