二分查找是一种在有序数组中查找特定元素的搜索算法。以下是一个简单的二分查找的C语言实现:
```c
#include
int binarySearch(int arr[], int l, int r, int x) {
if (r >= l) {
int mid = l + (r - l) / 2;
if (arr[mid] == x) {
return mid; // 元素找到,返回其索引
} else if (arr[mid] > x) {
// 如果中间元素大于查找元素,则在左半部分继续查找
return binarySearch(arr, l, mid - 1, x);
} else {
// 如果中间元素小于查找元素,则在右半部分继续查找
return binarySearch(arr, mid + 1, r, x);
}
} else {
return -1; // 元素不存在于数组中,返回-1
}
}
int main() {
int arr[] = {2, 3, 4, 10, 40}; // 已排序的数组
int n = sizeof(arr) / sizeof(arr[0]); // 数组的大小
int x = 10; // 要查找的元素
int result = binarySearch(arr, 0, n - 1, x); // 进行二分查找
if (result == -1) {
printf("元素不存在于数组中\n");
} else {
printf("元素在数组中的索引为:%d\n", result);
}
return 0;
}
```
这个程序首先定义了一个名为 `binarySearch` 的函数,该函数接受一个有序数组 `arr`,数组的左边界 `l` 和右边界 `r` 以及要查找的元素 `x` 作为参数。函数使用递归的方式实现二分查找。如果找到了元素 `x`,则返回其在数组中的索引;否则返回 `-1` 表示元素不存在于数组中。在 `main` 函数中,我们定义了一个已排序的数组和要查找的元素,然后调用 `binarySearch` 函数进行二分查找并输出结果。