用C语言编写一个二分检索函数,利用二分检索方法,在一个已经排序的数组a中查找某个指定的数据x是否存在。若出现,返回对应的数组元素下标,否则返回-1。编写main函数调用该检索函数。
时间: 2024-12-27 07:31:36 浏览: 30
在C语言中,你可以创建一个名为`binary_search`的函数来实现二分搜索算法。首先,我们需要检查输入数组是否为空以及目标值x是否合理。下面是基本的实现:
```c
#include <stdio.h>
// 定义二分查找函数
int binary_search(int a[], int n, int x) {
int left = 0;
int right = n - 1;
// 检查数组是否为空
if (n == 0)
return -1;
while (left <= right) {
int mid = left + (right - left) / 2; // 中间索引
// 如果找到匹配项,返回其索引
if (a[mid] == x)
return mid;
// 否则,如果目标值小于中间值,缩小右侧范围
else if (a[mid] > x)
right = mid - 1;
// 如果目标值大于中间值,缩小左侧范围
else
left = mid + 1;
}
// 找不到目标值,返回-1
return -1;
}
// 主函数用于测试
int main() {
int a[] = {1, 3, 5, 7, 9};
int n = sizeof(a) / sizeof(a[0]);
int x = 5; // 指定要查找的值
int result = binary_search(a, n, x);
if (result != -1)
printf("Element found at index %d\n", result);
else
printf("Element not found in the array.\n");
return 0;
}
```
在这个例子中,`binary_search`函数接受一个排序好的整数数组`a`、数组长度`n`以及要查找的目标值`x`。它通过不断将搜索范围减半来查找目标值,直到找到或范围为空。
阅读全文
相关推荐


















