二分查找是一种在有序数组中查找特定元素的搜索算法。它的工作原理是每次比较目标值与中点值,然后根据比较结果调整搜索范围。以下是使用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;
// 如果元素小于中间元素,则在左半部分查找
if (arr[mid] > x)
return binarySearch(arr, l, mid - 1, x);
// 否则元素在右半部分查找
return binarySearch(arr, mid + 1, r, x);
}
// 在数组中未找到元素,返回-1
return -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("元素在数组中的索引为 %d", result);
} else { // 如果未找到元素,则打印相应的消息
printf("元素不在数组中");
}
return 0;
}
```
这个程序首先定义了一个名为 `binarySearch` 的函数,该函数接受一个整数数组、数组的左边界和右边界以及要查找的元素作为输入。然后,该函数通过递归地查找元素来缩小搜索范围,直到找到元素或确定元素不存在于数组中。在主函数中,我们定义了一个已排序的数组和一个要查找的元素值,然后调用 `binarySearch` 函数来执行二分查找算法。最后,我们根据查找结果打印相应的消息。