check()函数用于判断a[mid]是否等于x
如果大于等于 r=mid
否则 l=mid
以下是代码
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1000010];
int x;
bool check(int y) {
if (y >= x)
return 1;
return 0;
}
int bs() {
int l = 0, r = n;
while (l + 1 < r) {
int mid = (l + r) / 2;
if (check(a[mid]))
r = mid;
else
l = mid;
}
if (a[l] == x)
return l;
if (a[r] == x)
return r;
return -1;
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
scanf("%d", &x);
printf("%d", bs());
return 0;
}
以上代码仅供参考