程序题c语言:使用二分查找,在一组有序元素中查找数据项(要求:形参是数组,实参是数组名) 输入(input):输入两行,第一行是数据集合,数据之间用逗号分隔;第二行是待查找数据。 输出(output):输出查找是否成功的提示信息。
时间: 2024-09-29 20:04:47 浏览: 30
在C语言中,你可以使用二分查找算法(Binary Search)来在一个已排序的数组中搜索特定值。下面是一个简单的函数示例,实现了这个功能:
```c
#include <stdio.h>
// 二分查找函数
int binary_search(int arr[], int size, int target) {
int left = 0;
int right = size - 1;
while (left <= right) {
int mid = left + (right - left) / 2; // 取中间位置
if (arr[mid] == target) {
return mid; // 找到目标,返回索引
} else if (arr[mid] < target) {
left = mid + 1; // 目标大于中间元素,移动左边界
} else {
right = mid - 1; // 目标小于中间元素,移动右边界
}
}
return -1; // 如果未找到目标,返回-1表示不存在
}
int main() {
int data[100], n, i, target;
printf("请输入数据集合(以逗号分隔),例如: 1, 3, 5, 7, 9\n");
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &data[i]);
}
printf("请输入要查找的数据:\n");
scanf("%d", &target);
int result = binary_search(data, n, target);
if (result != -1) {
printf("找到了,元素在数组中的位置是 %d\n", result + 1);
} else {
printf("没找到。\n");
}
return 0;
}
```
在这个程序中,`binary_search` 函数接受一个整数数组、数组大小和目标值作为参数,执行二分查找并返回目标值在数组中的位置,如果未找到则返回-1。`main` 函数负责读取输入,调用查找函数,并输出结果。
阅读全文