1、二分查找法
template<typename T>
int binarySearch(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;
}