使用递归算法,实现二分搜索。c语言代码
时间: 2024-05-15 12:15:16 浏览: 8
以下是使用递归算法实现二分搜索的C语言代码:
```c
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int x) {
if (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == x) {
return mid;
}
if (arr[mid] > x) {
return binarySearch(arr, left, mid - 1, x);
}
return binarySearch(arr, mid + 1, right, x);
}
return -1;
}
int main() {
int arr[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 23;
int result = binarySearch(arr, 0, n - 1, x);
if (result == -1) {
printf("Element not found\n");
} else {
printf("Element found at index %d\n", result);
}
return 0;
}
```
在上面的代码中,`binarySearch`函数接收一个数组`arr`以及需要查找的元素`x`的下标范围`left`和`right`。如果`left`大于`right`,则表示没有找到元素`x`,返回-1。否则,计算中间元素的下标`mid`,如果`arr[mid]`等于`x`,则返回`mid`。如果`arr[mid]`大于`x`,则在左半部分继续查找;否则,在右半部分继续查找。