折半查找

折半查找就是在升序排列的数组中每次把所求元素与最中间的元素比较,若比中间大,就在右边找,比中间小,就在左边找

#include<iostream>

using namespace std;
int num=0;
int find(int a[],int m,int left,int right)
{
while(left<=right)
{
num++;
int mid=(left+right)>>1;
if(m>a[mid])
left=mid+1;
else if(m<a[mid])
right=mid-1;
else
return mid;
}
return -1;
}
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
int m;
cin>>m;
cout<<find(a,m,0,n-1)<<endl;
cout<<num;
return 0;
}

猜你喜欢

转载自blog.csdn.net/acdalao/article/details/80056867