下面程序的运行结果为(在有序数组中二分查找第一个 ≥x 的位置,x=3):
int query(int n, int *a, int x) {
int l=0, r=n;
while (l < r) {
int mid = l + (r-l)/2;
if (a[mid] >= x) r = mid;
else l = mid + 1;
}
return l==n ? -1 : l;
}
// num={1,2,2,3,3,4,5,5,6,7}, x=3
- A. 2
- B. 3
- C. 4
- D. 5
正确答案:B