用C++写二分查找递归算法
时间: 2023-03-04 14:08:16 浏览: 52
当在一个有序数组中查找一个元素时,二分查找算法是一种高效的搜索方法。以下是使用C语言编写的递归算法示例:
```c
#include <stdio.h>
int binary_search_recursive(int arr[], int low, int high, int target) {
if (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
return binary_search_recursive(arr, mid + 1, high, target);
} else {
return binary_search_recursive(arr, low, mid - 1, target);
}
}
return -1;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 5;
int index = binary_search_recursive(arr, 0, n - 1, target);
if (index == -1) {
printf("Element not found in array");
} else {
printf("Element found at index %d", index);
}
return 0;
}
```
该递归算法将数组分为两半,并检查目标元素是否在左半部分、右半部分或中间位置。如果目标元素在左半部分,递归地调用函数并在左半部分进行二分查找;如果目标元素在右半部分,同样递归地调用函数并在右半部分进行二分查找;如果目标元素与中间元素匹配,函数将返回中间元素的索引。如果目标元素不在数组中,函数将返回-1。
阅读全文