前闭后闭代码,返回数组下标
template<typename T>
int binarySearch(T arr[], int n, T target) {
int l = 0, r = n - 1; //[l,r]
while (l <= r) { // 当l=r时,[l,r]定义依然有效
int mid = l + (r - l) / 2;
if (arr[mid] == target)
return mid;
if (target > arr[mid])
l = mid + 1;
else
r = mid - 1;
}
return - 1;
}
前闭后闭
template<typename T>
int binarySearch(T arr[], int n, T target) {
int l = 0, r = n; //[l,n)
while (l < r) { // 当l=r时,[l,r)定义无效
int mid = l + (r - l) / 2;
if (arr[mid] == target)
return mid;
if (target > arr[mid])
l = mid + 1;
else
r = mid;
}
return - 1;
}