5、用c语言写有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。
时间: 2024-12-25 07:29:31 浏览: 3
在C语言中,你可以使用折半查找法(也称为二分查找),这是一种高效的查找算法,适用于有序数组。以下是实现这个功能的一个简单示例:
```c
#include <stdio.h>
// 执行折半查找
int binary_search(int arr[], int n, int target) {
int low = 0;
int high = n - 1;
while (low <= high) {
int mid = low + (high - low) / 2; // 计算中间索引
if (arr[mid] == target) { // 如果找到目标值
return mid;
} else if (arr[mid] > target) { // 如果中间值大于目标,缩小查找范围到左半部分
high = mid - 1;
} else { // 中间值小于目标,缩小查找范围到右半部分
low = mid + 1;
}
}
// 数组中未找到目标数,返回-1表示"无此数"
return -1;
}
int main() {
int arr[15]; // 假设已经按照从大到小的顺序填充了15个数
int num;
printf("请输入你要查找的数字:");
scanf("%d", &num);
int index = binary_search(arr, 15, num);
if (index != -1) {
printf("数字 %d 的位置是第 %d 个。\n", num, index + 1); // 加1是因为数组下标从0开始
} else {
printf("无此数。\n");
}
return 0;
}
```
阅读全文