二分查找算法模板
#include<iostream>
#include<cstdio>
using namespace std;
const int n=4;
int a[]={0,5,6,8,10};
int erfenEqual(int low,int high,int key)
{
int mid;
while(low<=high)
{
mid=(low+high)/2;
if (a[mid]==key)
return mid;
else if(a[mid]>key)
high=mid-1;
else
low=mid+1;
}
return -1;
}
int erfenBig(int low,int high,int key)//找到第一个大于Key的元素的位置
{
int mid;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]>key)
high=mid-1;
else
low=mid+1;
}
return low;
}
int main()
{
int x=erfenEqual(1,4,8);
if (x==-1)
cout<<"找不到";
else
cout<<"找到,位置为"<<x;
x=erfenBig(1,4,8);
if (x>n)
cout<<"在数组中找不到比此数还大的数";
else
cout<<"找到,位置为"<<x;
return 0;
}