11 行代码C++算法模板
二分查找右边界
手动实现二分查找,在升序数组 a[1..n] 中查找 x 最后一次出现的位置,时间复杂度 O(log n)
// 若找到,返回下标(1‑based);否则返回 -1
int binarySearchRight(int a[], int n, int x) {
if (n <= 0) return -1;
int l = 1, r = n;
while (l < r) {
int mid = (l + r + 1) / 2;#二分#二分查找