用递归算法实现二分直找,即:有n个已经从小到大排序好的教据(不重复),从键盘输入一个数X,用对半查找方法,判断它是否在这n个数中c语言
时间: 2024-11-12 11:46:24 浏览: 19
在 C 语言中,你可以使用递归实现二分查找算法,也称为折半搜索。下面是简单的代码示例:
```c
#include <stdio.h>
// 定义二分查找函数
int binarySearch(int arr[], int low, int high, int x) {
if (high >= low) {
// 计算中间索引
int mid = low + (high - low) / 2;
// 如果x等于中间元素,返回中位数索引
if (arr[mid] == x)
return mid;
// 如果x小于中间元素,向左半部分查找
else if (arr[mid] > x)
return binarySearch(arr, low, mid - 1, x);
// 否则,在右半部分查找
else
return binarySearch(arr, mid + 1, high, x);
}
// 如果未找到,则返回-1表示数组中不存在该元素
return -1;
}
int main() {
int n, i;
printf("Enter the number of elements in the array: ");
scanf("%d", &n);
// 创建一个已排序的数组(这里仅作示例,实际应用需要用户输入)
int arr[n];
for (i = 0; i < n; i++)
scanf("%d", &arr[i]);
int x;
printf("Enter the element to search: ");
scanf("%d", &x);
// 调用二分查找函数并打印结果
int result = binarySearch(arr, 0, n - 1, x);
if (result != -1)
printf("Element found at index %d\n", result);
else
printf("Element not found in the array\n");
return 0;
}
```
这个程序首先获取数组大小、排序数组,并读取用户输入的目标值。然后调用 `binarySearch` 函数进行查找,如果找到就返回元素的位置,否则返回 -1。
阅读全文