二分查找c语言
二分查找是一种在有序数组中查找特定元素的搜索算法。以下是一个简单的二分查找的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` 函数进行二分查找并输出结果。
免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。