使用循环的方式二分查找
通过不断缩小l与r的范围
最后l停留的位置就是查找到该数的位置
int arr[1000010];
void check(int n.int m)//n一共有多少数字 m查找的数字
{
int l=0;int r=n-1;
while(l<=r)
{
int mid=(r+l)/2;
if(arr[mid]>=m)r=mid; //核心:若m在左边,则l停留的位置是左边的第一个m
else l=mid+1;
}
if(arr[l]!=m)cout<<"未找到该数字"
else cout<<"该数字在第l位"<<endl;
}
void check(int n,int m)
{
int l=0;int r=n-1;
while(l<=r)
{
int mid=(l+r+1)/2; //当l=mid时,需要+1否则会死循环
if(arr[mid]<=m)l=mid; //核心:若m在右边,则l停留的位置是右边的第一个m
else r=mid-1;
}
if(arr[l]!=m)cout<<"未找到该数字"
else cout<<"该数字在第l位"<<endl;
}