69,371
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
int a[12] = {4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3};
int bsear(int a[], int l, int r){
if(a[l] < a[r]) return a[l];//单调的情况
int k = a[r], id = r;
while(l <= r){
int mid = (l + r) / 2;
if(a[mid] <= k){
id = mid;
r = mid - 1;
}else l = mid + 1;
}
return a[id];
}
int main(){
printf("%d\n", bsear(a, 0, 11));
return 0;
}