c 语言二分法查找递归
时间: 2023-07-02 18:10:27 浏览: 106
二分法排序算法 C语言实现
3星 · 编辑精心推荐
下面是C语言实现二分法查找的递归版本代码:
```c
#include <stdio.h>
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);
else
return binarySearch(arr, mid + 1, r, x);
}
return -1;
}
int main(void) {
int arr[] = {2, 5, 7, 9, 11, 13, 15};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 11;
int result = binarySearch(arr, 0, n - 1, x);
if (result == -1)
printf("Element is not present in array");
else
printf("Element is present at index %d", result);
return 0;
}
```
在递归实现中,我们首先判断给定的数组区间是否有效(r >= l)。然后,我们计算中间元素索引mid,如果它与要查找的元素相等,我们返回mid。否则,如果中间元素大于要查找的元素,则我们将左半部分作为新的查找区间,并递归调用函数。否则,我们将右半部分作为新的查找区间,并递归调用函数。如果元素不存在,则返回-1。
阅读全文