/***二分查找适应于有序排列的元素,如果不是有序的,则无法使用。它是先和中间数比较,如果比中间数大,那么移动到中间数右边区域比较,反之则左边区域,直到全部比较完成***/
demo如下:
#include<iostream>
using namespace std;
int binarysearch(int arr[],int length,int key)
{
int start=0;
int end=length-1;
while(end>start)
{
int middle=(start+end)>>1;
int tmp=arr[middle];
if(tmp>key)
end=middle-1;
else if(tmp<key)
start=middle+1;
else
return middle;
}
return -1;
}
int main()
{
int array[3]={0,2,3};
int j,k;
cout<<"请输入要查找的数"<<endl;
cin>>j;
k=binarysearch(array,3,j);
if(k==-1)
{
cout<<"NOT FOUND"<<endl;
}
else
{
cout<<j<<"的位置是"<<k<<endl;
}
return 0;
}