1、二分查找法
template<typename T>
int binarySearch1(T arr[], int n, T target) {
// 在 [l ... r] 的范围里寻找 target
int l = 0;
int r = n - 1;
int mid;
// 当 l == r 时, 区间 [l ... r] 依然是有效的
while (l <= r) {
mid = l + (r - l) / 2;
if (arr[mid] == target) return mid;
if (arr[mid] < target) l = mid + 1;
else r = mid - 1;
}
return -1;
}
template<typename T>
int binarySearch2(T arr[], int n, T target) {
// 在 [l ... r) 的范围里寻找 target
int l = 0;
int r = n;
int mid;
// 当 l < r 时, 区间 [l ... r) 就是有效的
while (l < r) {
mid = l + (r - l) / 2;
if (arr[mid] == target) return mid;
if (arr[mid] < target) l = mid + 1;
else r = mid;
}
return -1;
}
标签:...,arr,return,target,int,常见,mid,问题,数组
From: https://www.cnblogs.com/lidong422339/p/17360227.html