二分查找第一个比K大的数

1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int find(vector<int> a, int k) {
int l = 0, r = a.size();
int id;
while (l <= r) {

int mid = l + (r - l) / 2;
if (a[mid] > k) {
id = mid;
r = mid - 1;
} else {
l = mid + 1;
}
}
return id;
}

2.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int binary(vector<int> v, int x) {
int i = 0, j = v.size() - 1;
while (i < j) {
int mid = i + (j - i) / 2;
if (v[mid] >= x) {
j = mid;
} else {
i = mid + 1;
}

}

return i;
}