#include<iostream>
using namespace std;
template<typename Type>
int BinarySearch(Type a[],const Type& x,int n) //&x是引用型
{
int left=0,right=n-1;
int num=0; //测试
while(left<=right)
{
int middle=(left+right)/2;
cout<<"第"<<++num<<"次:"<<middle<<endl; //测试
if(x==a[middle])return middle;
if(x>a[middle])left=middle+1;
else right=middle-1;
}
return -1;
}
int main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9},result;
int x;
do{
cout<<"(输入-1结束)请输入要二分搜索的数:";
cin>>x;
result=BinarySearch(a,x,10);
if(result!=-1)
{
cout<<"存在数:"<<x<<endl;
}
else
{
cout<<"不存在数:"<<x<<endl;
}
}while(x!=-1);
return 0;
}