二分法怎么编程c加加语言代码

时间:2025-01-29 03:22:29 网络游戏

```cpp

include

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;

}

}

// 目标值不存在于数组中,返回-1

return -1;

}

int main() {

int arr[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91};

int target = 23;

int arrSize = sizeof(arr) / sizeof(arr);

// 在有序数组中查找目标值

int result = binarySearch(arr, 0, arrSize - 1, target);

if (result != -1) {

cout << "目标值 " << target << " 在数组中的索引为: " << result << endl;

} else {

cout << "目标值 " << target << " 不存在于数组中" << endl;

}

return 0;

}

```

代码解释:

函数定义

`binarySearch` 函数接受一个有序数组 `arr`、左边界 `left`、右边界 `right` 和目标值 `target` 作为参数。

使用 `while` 循环在数组中查找目标值,直到 `left` 大于 `right`。

计算中间索引 `mid`,并根据 `arr[mid]` 与 `target` 的关系调整 `left` 或 `right`。

如果找到目标值,返回其索引;否则返回 `-1`。

主函数

定义一个有序数组 `arr` 和目标值 `target`。

计算数组的大小 `arrSize`。

调用 `binarySearch` 函数进行查找,并根据返回值输出结果。

这个示例代码展示了如何在C++中实现二分法查找,适用于有序数组。你可以根据需要修改数组和目标值进行测试。