题解
2025-08-17 10:07:18
发布于:浙江
5阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N];
//二分 有序序列a[l,r]中查找X
int ef(int a[],int l,int r,int x){
while(l<=r){
int mid = (l + r) / 2;
if(a[mid] == x) return mid;//查找成功,返回mid
else if(a[mid] > x) r = mid - 1;//x在a[mid]左边,往左找,更新右端点
else if(a[mid] < x) l = mid + 1;//x在a[mid]右边,往右找,更新左端点
}
return -1;//当l>r退出while循环,没有找到,返回-1
}
int main(){
int n,m,x;
cin >> n;
for(int i=1;i<=n;i++){
cin >> a[i];
}
cin >> x;
int t = ef(a,1,n,x);
cout << t;
return 0;
}
这里空空如也
有帮助,赞一个