用c++写一个二分查找法
时间: 2024-02-18 17:34:44 浏览: 72
以下是用C语言实现的二分查找算法:
```c
#include <stdio.h>
int binary_search(int arr[], int low, int high, int target) {
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 7;
int index = binary_search(arr, 0, n - 1, target);
if (index == -1) {
printf("%d not found in the array.\n", target);
} else {
printf("%d found at index %d in the array.\n", target, index);
}
return 0;
}
```
代码解释:
`binary_search` 函数接受一个整数数组 `arr` ,以及数组的起始下标 `low` 和结束下标 `high` ,还有要查找的目标值 `target` 。函数返回目标值在数组中的下标,如果找不到则返回 -1 。
在函数中,使用 `while` 循环来不断缩小查找范围,直到找到目标值或者查找范围为空。每次循环中,计算中间元素的下标 `mid` ,然后将目标值与中间元素进行比较。如果相等,则返回中间元素的下标。如果目标值比中间元素大,则在右半部分继续查找;否则在左半部分继续查找。
在 `main` 函数中,我们定义并初始化一个整数数组 `arr` ,然后计算数组的长度 `n` 。接着定义要查找的目标值 `target` ,并调用 `binary_search` 函数来查找目标值在数组中的下标。最后根据返回值判断是否找到了目标值。
阅读全文