C语言编程 1. 设计要求:(1)使用二分查找,在一组有序元素中查找数据项(要求:形参是数组,实参是数组名 )(2)使用二分查找,在一组有序元素中查找数据项(要求形参是指针变量,实参是数组名)。
时间: 2024-09-25 11:04:14 浏览: 38
C语言编程是一种广泛使用的低级编程语言,它的设计允许开发者直接控制硬件资源。对于你的两个需求,我们可以分别创建两个函数:
1. **使用数组作为形参的二分查找**:
```c
#include <stdio.h>
// 函数声明,形参为整型数组和数组长度
int binary_search(int arr[], int n, int target);
void main() {
int data[] = {1, 3, 5, 7, 9, 11};
int size = sizeof(data) / sizeof(data[0]);
// 调用函数并打印结果
int result = binary_search(data, size, 5);
if (result != -1)
printf("找到数据项,位置: %d\n", result);
else
printf("数据项未找到\n");
}
// 二分查找函数实现
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)
left = mid + 1; // 目标大于中间值,缩小左边界
else
right = mid - 1; // 目标小于中间值,缩小右边界
// 如果左界超过右界还没找到,则返回-1表示未找到
if (left > right)
return -1;
}
}
```
2. **使用指针作为形参的二分查找**:
```c
#include <stdio.h>
#define SIZE 6
// 使用指针的二分查找函数声明
int binary_search_ptr(int* arr, int len, int target);
int main() {
int data[] = {1, 3, 5, 7, 9, 11};
int* ptr = data; // 创建指向数组首元素的指针
// 调用函数并打印结果
int result = binary_search_ptr(ptr, SIZE, 5);
if (result != -1)
printf("找到数据项,位置: %d\n", result);
else
printf("数据项未找到\n");
}
// 使用指针的二分查找函数实现
int binary_search_ptr(int* arr, int len, int target) {
int left = 0;
int right = len - 1;
// ... (同上,只是这里的arr是通过指针访问数组元素)
}
```
阅读全文