使用c语言用递归的方法,给定一个有序序列,使用二分查找指定的值。
时间: 2024-02-06 17:09:48 浏览: 66
好的,下面是使用递归方式实现二分查找的代码示例:
```c
#include <stdio.h>
int binary_search(int arr[], int left, int right, int target) {
if (left > right) {
return -1; // 没有找到目标元素,返回 -1
}
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid; // 找到目标元素,返回其下标
} else if (arr[mid] > target) {
return binary_search(arr, left, mid - 1, target); // 在左半部分继续查找
} else {
return binary_search(arr, mid + 1, right, target); // 在右半部分继续查找
}
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11};
int n = sizeof(arr) / sizeof(int);
int target = 5;
int index = binary_search(arr, 0, n - 1, target);
if (index == -1) {
printf("没有找到目标元素 %d\n", target);
} else {
printf("找到目标元素 %d,下标为 %d\n", target, index);
}
return 0;
}
```
上面的代码中,`binary_search` 函数表示二分查找的核心逻辑。该函数接收一个有序数组 `arr`、查找范围左右边界 `left` 和 `right`、以及目标元素 `target`。在查找过程中,每次取中间元素 `mid`,如果 `arr[mid]` 等于目标元素 `target`,则直接返回 `mid`;如果 `arr[mid]` 大于目标元素 `target`,则在左半部分继续查找;如果 `arr[mid]` 小于目标元素 `target`,则在右半部分继续查找。如果最终没有找到目标元素,则返回 -1。
在 `main` 函数中,我们定义了一个有序数组 `arr`,并指定要查找的目标元素为 5。然后调用 `binary_search` 函数进行查找,并根据返回值判断是否找到目标元素。
阅读全文