c++二分函数查找反向
时间: 2023-12-15 19:07:23 浏览: 33
以下是一个简单的 C 语言二分查找函数,可以在一个有序数组中查找某个值,并返回其在数组中的下标。如果要进行反向查找,只需要将比较运算符从小于号改为大于号,同时将数组的查找范围也进行反向调整即可。
```c
int binarySearch(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
例如,如果我们要在一个递减的数组中查找某个值,可以这样修改上述代码:
```c
int binarySearchReverse(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) { // 改为大于号
left = mid + 1; // 范围也反向调整
} else {
right = mid - 1;
}
}
return -1;
}
```