在一个单调递增(没有重复数值)的数组中,使用二分查找找到X的下标。 注意本题中会有多次查询。c++无其他头文件无其他函数无vector无sizeof入门级萌新级别适合初学者理解
时间: 2024-04-17 19:29:14 浏览: 108
算法导论二分查找算法
你可以使用二分查找算法来在单调递增的数组中找到目标值X的下标。以下是一个使用C++编写的示例代码:
```cpp
#include <iostream>
int binarySearch(int arr[], int n, int target) {
int left = 0;
int 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;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int queries[] = {2, 5, 9};
for (int i = 0; i < sizeof(queries) / sizeof(queries[0]); i++) {
int result = binarySearch(arr, n, queries[i]);
if (result == -1) {
std::cout << "Element " << queries[i] << " not found" << std::endl;
} else {
std::cout << "Element " << queries[i] << " found at index " << result << std::endl;
}
}
return 0;
}
```
这段代码定义了一个`binarySearch`函数,它接受一个递增排序的数组`arr`、数组的长度`n`和目标值`target`作为参数。函数使用二分查找算法在数组中查找目标值,并返回其下标。如果未找到目标值,则返回-1。
在`main`函数中,我们定义了一个示例数组`arr`和要查询的值数组`queries`。然后,我们遍历查询数组,并调用`binarySearch`函数进行查找。最后,根据返回的结果输出相应的信息。
希望这个示例能帮助你理解如何使用二分查找算法在单调递增数组中查找目标值的下标。如果你还有其他问题,请随时提问!
阅读全文