用C写一个二分法查找
时间: 2024-06-14 11:08:45 浏览: 164
二分法查找是一种常用的查找算法,它适用于有序数组。下面是用C语言实现二分法查找的示例代码:
```c
#include <stdio.h>
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;
}
// 如果目标值小于中间值,则在左半部分继续查找
if (arr[mid] > target) {
right = mid - 1;
}
// 如果目标值大于中间值,则在右半部分继续查找
else {
left = mid + 1;
}
}
// 如果未找到目标值,则返回-1
return -1;
}
int main() {
int arr[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 12;
int result = binarySearch(arr, 0, n - 1, target);
if (result == -1) {
printf("目标值 %d 未找到\n", target);
} else {
printf("目标值 %d 在索引 %d 处找到\n", target, result);
}
return 0;
}
```
上述代码中,`binarySearch` 函数接受一个有序数组 `arr`、左边界 `left`、右边界 `right` 和目标值 `target` 作为参数。它使用循环来不断缩小查找范围,直到找到目标值或查找范围为空。
在 `main` 函数中,我们定义了一个有序数组 `arr`,并计算出数组的长度 `n`。然后,我们调用 `binarySearch` 函数来查找目标值 `target` 在数组中的索引,并根据返回结果输出相应的信息。
阅读全文