c++实现折半查找
时间: 2023-06-29 12:05:30 浏览: 146
C++实现折半查找
5星 · 资源好评率100%
折半查找(Binary Search)是一种高效的查找算法,也叫二分查找。它适用于有序序列的查找,通过每次将查找区间缩小一半,直到查找到目标元素或者区间为空为止。
以下是C++实现折半查找的代码:
```c++
#include <iostream>
using namespace std;
int binarySearch(int arr[], int left, int right, int target) {
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};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 4;
int index = binarySearch(arr, 0, n - 1, target);
if (index != -1) {
cout << "目标元素在数组中的下标为:" << index << endl;
} else {
cout << "目标元素不在数组中!" << endl;
}
return 0;
}
```
在上述代码中,binarySearch函数接收四个参数:数组arr、查找区间的左右边界left和right、目标元素target。每次循环中,计算出中间位置mid,如果中间元素等于目标元素,返回mid;否则,如果中间元素小于目标元素,则在右半边查找,更新left为mid+1;否则,在左半边查找,更新right为mid-1。
在主函数中,定义一个有序数组arr和目标元素target,调用binarySearch函数进行查找。如果函数返回值不为-1,说明目标元素在数组中,输出目标元素在数组中的下标;否则,输出目标元素不在数组中。
阅读全文