C++的折半查找的代码
时间: 2024-10-20 07:04:17 浏览: 29
折半查找,也称为二分查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是每次将查找范围缩小一半,直到找到目标元素或者范围变成空。以下是C++实现折半查找的一个简单示例:
```cpp
#include <iostream>
// 定义函数模板用于通用整数类型的折半查找
template<typename T>
int binarySearch(T arr[], int left, int right, T target) {
if (right >= left) {
int mid = left + (right - left) / 2; // 计算中间索引
// 如果目标等于中间元素,则返回中间索引
if (arr[mid] == target)
return mid;
// 如果目标小于中间元素,向左半部分继续查找
else if (arr[mid] > target)
return binarySearch(arr, left, mid - 1, target);
// 否则,向右半部分继续查找
else
return binarySearch(arr, mid + 1, right, target);
}
// 找不到目标,返回 -1
return -1;
}
int main() {
int sortedArray[] = {1, 3, 5, 7, 9, 11, 13};
int n = sizeof(sortedArray) / sizeof(sortedArray[0]);
int target = 9;
int result = binarySearch(sortedArray, 0, n - 1, target);
if (result != -1)
std::cout << "Element found at index " << result << std::endl;
else
std::cout << "Element not found" << std::endl;
return 0;
}
```
这个例子中,`binarySearch`函数接受一个已排序的数组、两个边界索引和目标值作为参数。如果找到目标,函数返回其位置;如果没有找到,返回-1。
阅读全文