写一个C++二分法代码
时间: 2024-05-02 09:18:23 浏览: 101
以下是一个C语言实现的二分法代码示例:
```c
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int x) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == x) // 如果中间元素是要查找的元素
return mid;
if (arr[mid] < x) // 如果中间元素小于要查找的元素,则在右半部分继续查找
left = mid + 1;
else // 如果中间元素大于要查找的元素,则在左半部分继续查找
right = mid - 1;
}
return -1; // 如果查找不到,则返回-1
}
int main() {
int arr[] = { 2, 5, 7, 9, 11, 15, 18, 20 };
int n = sizeof(arr) / sizeof(arr[0]);
int x = 11;
int index = binarySearch(arr, 0, n - 1, x);
if (index == -1)
printf("元素 %d 未找到\n", x);
else
printf("元素 %d 在数组中的下标为 %d\n", x, index);
return 0;
}
```
该代码中,`binarySearch` 函数实现了二分查找算法。它接受四个参数:`arr` 数组表示要查找的数组,`left` 和 `right` 分别表示要查找的区间的左、右下标,`x` 表示要查找的元素。该函数使用 `while` 循环进行迭代查找,每次将中间元素的值与要查找的元素进行比较,根据比较结果决定在左半部分或右半部分继续查找,直到找到目标元素或查找区间为空。如果找到目标元素,则返回它在数组中的下标;否则返回 `-1` 表示未找到。在 `main` 函数中,我们将一个有序数组和要查找的元素传递给 `binarySearch` 函数,并输出查找结果。
阅读全文