P38_2-3
#include <iostream>
using namespace std;
void binary_search(int data[],int n,int x,int &lo)
{
int bigger=-1,smaller=-1;
if(n <=0|| x < data[0]|| x > data[n-1])
{
lo=-1;
}
int left =0, right = n-1;
int middle;
while(left <= right)
{
middle =(left + right)/2;
if(x == data[middle])
{
lo=middle;
return;
}
else if(x > data[middle])
{
smaller=middle;
left = middle +1;
}
else
{
bigger=middle;
right = middle -1;
}
}
lo=-1;
cout<<smaller<<" "<<bigger<<endl;
}
int main()
{
int a[8]={1,2,3,5,6,7,8,10};
int lo=0;
int x;
cin>>x;
binary_search(a,8,x,lo);
cout<<"位置"<<lo<<endl;
return 0;
}
网友评论