Day03 二分查找
2026-08-04 14:07:39
发布于:广东
二分查找X的模板
int l=1,r=n,x;
cin >> x;
while(l<=r){
int mid = (l+r)/2;
if(a[mid]==x){ // 猜对了
cout << mid;
return 0;
}else if(a[mid]>x){//猜大了
r = mid - 1;
}else{ // 猜小了
l = mid + 1;
}
}
cout << -1;//没找到
查找第一个大于等于x的位置
lower_bound(a+1,a+n+1,x)-a;
a是数组名,下标从1~n查找第一个大于等于x的位置
找到会返回相应的位置,找不到会返回n+1
查找第一个大于x的位置
upper_bound(a+1,a+n+1,x)-a;
a是数组名,下标从1~n查找第一个大于x的位置
找到会返回相应的位置,找不到会返回n+1
这里空空如也


















有帮助,赞一个