C++折半查找代码怎么写
时间: 2023-03-13 20:00:20 浏览: 116
折半查找代码的实现主要是基于二分查找的思想,其步骤如下:1. 首先,在有序序列中取出中间位置的元素。
2. 然后,将取出的元素与查找元素进行比较。
3. 如果查找元素等于中间元素,则查找成功。
4. 如果查找元素小于中间元素,则在中间元素的左边继续查找;
5. 如果查找元素大于中间元素,则在中间元素的右边继续查找;
6. 重复上述步骤,直到查找到指定的元素。
相关问题
c++折半查找递归算法完整代码
折半查找也叫二分查找,是一种在有序数组中查找特定元素的搜索算法。以下是C++中使用递归实现的折半查找算法的完整代码:
```cpp
#include <iostream>
using namespace std;
// 递归函数用于执行折半查找
int binarySearch(int arr[], int low, int high, int target) {
// 基本情况:数组为空或只有一个元素
if (low > high)
return -1; // 如果目标值不在数组中,返回 -1
// 计算中间索引
int mid = low + (high - low) / 2;
// 检查中间元素是否为目标值
if (arr[mid] == target)
return mid; // 找到目标,返回其索引
// 否则,如果目标小于中间元素,则在左半部分递归查找
else if (arr[mid] > target)
return binarySearch(arr, low, mid - 1, target);
// 否则,在右半部分递归查找
else
return binarySearch(arr, mid + 1, high, target);
}
int main() {
int arr[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 23;
int result = binarySearch(arr, 0, n - 1, target);
if (result != -1)
cout << "Element found at index " << result << endl;
else
cout << "Element not found in the array" << endl;
return 0;
}
```
在这个代码中,`binarySearch` 函数接收一个排序好的整数数组 `arr`、起始索引 `low`、结束索引 `high` 和要查找的目标值 `target`。它会不断将搜索范围减半,直到找到目标元素或者范围为空。若未找到,最后返回 -1。
C++的折半查找的代码
折半查找,也称为二分查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是每次将查找范围缩小一半,直到找到目标元素或者范围变成空。以下是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。
阅读全文