二分查找就是逐步缩小查找的范围,它遵循分治三步法,把原序列划分成元素个数尽量接近的两个子序列,然后递归查找。
它的时间复杂度为O(logn),查找前提是数组已经排序好了
#include<iostream>
using namespace std;
int bsearch(int a[],int low,int high,int v){
int m;
while(low<high){
m=low+(high-low)/2;
if(a[m]==v)
return m;
else if(a[m]>v)
high=m;
else
low=m+1;
}
return -1;
}
int main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
int s;
cin>>s;
int f=bsearch(a,0,9,s);
if(f==-1)
cout<<"没有找到"<<s<<endl;
else
cout<<"找到"<<f<<endl;
}