问题描述:使用二分查找,在一组有序元素中查找数据项(要求: 形参是数组,实参是数组名 )。
时间: 2024-09-29 10:08:05 浏览: 39
在C语言中,二分查找(Binary Search)是一种高效的搜索算法,适用于已排序的数据集。当你有一个有序数组,你需要查找某个特定值是否存在于数组中时,二分查找可以有效地缩小搜索范围,而不是从头到尾逐个比较。
这里是一个简单的C语言函数,实现了二分查找,形参为一个整型数组和数组的长度:
```c
#include <stdio.h>
// 定义二分查找函数
int binary_search(int arr[], int n, int target) {
int left = 0;
int right = n - 1;
// 当左指针小于等于右指针时循环
while (left <= right) {
int mid = left + (right - left) / 2; // 计算中间索引
// 如果中间元素等于目标值,返回其索引
if (arr[mid] == target)
return mid;
// 如果中间元素大于目标值,舍弃右侧
else if (arr[mid] > target)
right = mid - 1;
// 否则,舍弃左侧
else
left = mid + 1;
}
// 没有找到目标值,返回-1表示不在数组中
return -1;
}
int main() {
int data[] = {1, 3, 5, 7, 9}; // 示例数组
int size = sizeof(data) / sizeof(data[0]);
int search_target = 5;
int result = binary_search(data, size, search_target);
if (result != -1)
printf("Element found at index %d\n", result);
else
printf("Element not found in the array\n");
return 0;
}
```
在这个例子中,`binary_search` 函数接收一个整数数组 `arr`,它的长度 `n` 和要查找的目标值 `target`。函数通过不断比较中间元素与目标值,逐步缩小搜索区间直到找到目标或确定不存在为止。
阅读全文