这里要查找的数是4,运行结果是这样的
#include<iostream> //二分查找,找目标数的下标
using namespace std;
const int n=1e6; //10的六次方
int arr[n];
int erfen(int arr[],int n,int x)
{
int l=1;
int r=n;
int ans=-1;
while(l<=r)
{
int mid=(l+r)/2;
if(arr[mid]==x)
{
ans=mid;
break; //查找完毕,跳出
}
if(arr[mid]<x)
{
l=mid+1;
}
else
{
r=mid-1;
}
}
return ans;
}
int main( )
{
int n,key;
cin>>n; //输入数据的个数
for(int i=1;i<=n;i++)
{
cin>>arr[i]; //输入所有数据
}
cin>>key; //key为要查找的数
int ans=erfen(arr,n,key); //ans为要查找的数的下标
cout<<ans<<endl;
return 0;
}
在这里推荐一个b站视频,我这个就是根据该视频写的;
up:麦克老师讲算法 视频名:二分算法(查找)