//二分查找
#include<bits/stdc++.h>
using namespace std;
//找到大于等于x的最小值
int lower_bound(int arr[],int l,int r,int x){
while(l<r){
int mid=l+r+1>>1;
if(arr[mid] <= x){
l=mid;//找到最右端的x,所以l需要往右移
}
else{
r=mid-1;
} //1 2 2 2 3
}
return l;
}
//找到小于等于x的最大值
int upper_bound(int arr[],int l,int r,int x){
while(l<r){
int mid=l+r>>1;
if(arr[mid]>=x){
r=mid;//找到最左端的x,所以r需要往左移
}
else{
l=mid+1;
}
}
return r;
}
7.31 二分查找
最新推荐文章于 2025-10-15 22:23:28 发布
