温馨提示×

c语言怎么用递归实现二分法查找

小亿
207
2024-03-18 10:10:57
栏目: 编程语言

下面是使用递归实现二分法查找的C语言代码示例:

#include <stdio.h> int binarySearch(int arr[], int low, int high, int key) { if (low > high) { return -1; // key not found } int mid = low + (high - low) / 2; if (arr[mid] == key) { return mid; // key found at index mid } else if (arr[mid] < key) { return binarySearch(arr, mid + 1, high, key); // search in the right half } else { return binarySearch(arr, low, mid - 1, key); // search in the left half } } int main() { int arr[] = {2, 4, 6, 8, 10, 12, 14, 16}; int n = sizeof(arr) / sizeof(arr[0]); int key = 10; int index = binarySearch(arr, 0, n - 1, key); if (index != -1) { printf("Element found at index: %d\n", index); } else { printf("Element not found\n"); } return 0; } 

在上面的代码中,binarySearch函数使用递归的方式实现了二分法查找。函数接受一个整型数组arr、查找范围的起始下标low、结束下标high和要查找的关键值key作为参数。函数首先计算中间元素的下标mid,然后分别判断arr[mid]key的大小关系,根据不同情况选择在左半部分或右半部分继续查找,直到找到目标元素或查找范围为空。

main函数中,我们定义了一个整型数组arr,并调用binarySearch函数来查找key=10在数组中的位置。最终输出查找结果。

0