用C语言写出二分查找算法
时间: 2024-10-29 08:03:20 浏览: 51
当然可以。下面是使用C语言实现二分查找算法的简单版本,这个函数假设输入的数组已经按照升序排列:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 定义二分查找函数
int binarySearch(int arr[], int left, int right, int target) {
if (right >= left) {
int mid = left + (right - left) / 2;
// 如果目标值等于中间元素
if (arr[mid] == target)
return mid;
// 如果目标值小于中间元素,向左半部分查找
else if (arr[mid] > target)
return binarySearch(arr, left, mid - 1, target);
// 否则,向右半部分查找
else
return binarySearch(arr, mid + 1, right, target);
}
// 找不到目标值,返回-1
return -1;
}
int main() {
int arr[] = {2, 3, 4, 10, 40};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 10; // 搜索的目标值
srand(time(0)); // 为了演示随机目标值,这里用当前时间初始化随机数生成器
// 在已排序数组中查找目标值
int result = binarySearch(arr, 0, n - 1, target);
if (result != -1)
printf("Element is present at index %d\n", result);
else
printf("Element is not present in array\n");
return 0;
}
```
在这个例子中,`binarySearch`函数接受一个已排序的整型数组`arr`,以及两个索引`left`和`right`来表示待查找区间的左右边界。函数通过不断缩小查找区间直到找到目标值或确定其不存在于数组中。`main`函数里创建了一个简单的示例数组,并调用了`binarySearch`函数查找目标值。
阅读全文