//写一个函数BinarySeach,在包含size个元素的、从小到大排序的int数组a里查找元素
//p,如果找到,则返回元素下标,如果找不到,则返回-1。要求复杂度O(log(n))
#include<iostream>
#include<algorithm>
using namespace std;
int BinarySearch(int a[],int size,int p)
{
int l=0;
int r=size-1;
while(l<=r)
{
int middle=(l+r)/2;
if(a[middle]==p)
return middle;
else if(a[middle]>p)
r=middle-1;//已经知道了中间大于p,那么我们可以直接更加放缩范围
else
l=middle+1;
}
return -1;
}
int main()
{
int num;
cin>>num;
int a[num];
for(int i=0;i<num;++i)
cin>>a[i];
sort(a,a+num);
int m;
cin>>m;
cout<<BinarySearch(a,num,m);
}
二分搜索
最新推荐文章于 2024-09-06 16:24:56 发布