用c语言写一个折半法查询
时间: 2024-05-01 19:18:47 浏览: 61
c语言编写的折半查找
算法。
好的,以下是用 C 语言实现折半查找算法的示例代码:
```c
#include <stdio.h>
// 折半查找函数
int binarySearch(int arr[], int size, int target) {
int left = 0;
int right = size - 1;
while (left <= right) {
int mid = (left + right) / 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, 3, 5, 7, 9};
int size = sizeof(arr) / sizeof(arr[0]);
int target = 5;
int index = binarySearch(arr, size, target);
if (index == -1) {
printf("未找到 %d\n", target);
} else {
printf("找到了 %d,索引为 %d\n", target, index);
}
return 0;
}
```
以上代码中,我们定义了一个 binarySearch 函数,接收一个整型数组、数组长度和目标值三个参数,返回目标值在数组中的索引,如果没找到则返回 -1。
在函数内部,我们使用 left 和 right 两个指针来表示当前查找区间的左右端点,不断更新它们的值,直到找到目标值或者区间缩小到空集为止。每次查找时,我们计算中间位置 mid,判断目标值与中间值的大小关系,缩小查找区间的范围。
在主函数中,我们定义了一个示例数组,调用 binarySearch 函数查找目标值 5 在数组中的位置。如果找到了,输出目标值和它的索引,否则输出未找到。
阅读全文