#include <iostream>
#include <algorithm>
using namespace std;
int BinarySearch(int s[],int n,int x){
//数组为空时返回值
if(n==0)
return 1;
//定义区间左值、中值和右值
int low=0,high=n-1;
int mid; //当left和right重合时进行最后一次比较
while(low<=high){
mid=(low+high)/2;
if(s[mid]>=x){//查找值小于等于中值时
if(mid==0||s[mid-1]<x)
//考虑到第一个值就是所求值的情况,防止mid-1数组越界(短路运算)
return mid+1;
else
high=mid-1;
}else{//查找值大于中值时
low=mid+1;
}
}
//未查找到在此处返回数组长度加1
return n+1;
}
int main(){
int n,x;
cin>>n>>x;
int s[n];
for(int i=0;i<n;i++){
cin>>s[i];
}
int i=BinarySearch(s,n,x);
cout<<i<<endl;
return 0;
}
<
7-4 二分查找
最新推荐文章于 2024-11-11 17:35:56 发布