2)有15个数存放在一个数组中,输入一个数要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出无此数,要找的数用scanf函数输入。
时间: 2024-12-18 12:30:51 浏览: 5
折半查找(也称二分查找),通常用于有序数组中查找特定元素。下面是使用C语言实现的一个简单示例,假设我们有一个`int`类型的数组`arr`,长度为15:
```c
#include <stdio.h>
// 假设数组已经排序
int binarySearch(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) { // 如果中间元素小于目标,缩小左半部分搜索范围
low = mid + 1;
} else { // 如果中间元素大于目标,缩小右半部分搜索范围
high = mid - 1;
}
}
// 没有找到目标,返回-1表示"无此数"
return -1;
}
int main() {
int arr[15]; // 假设这里初始化了已排序的15个数
int num;
printf("Enter the number to search: ");
scanf("%d", &num);
int index = binarySearch(arr, 15, num);
if (index != -1) {
printf("The number %d is at position %d in the array.\n", num, index + 1); // 注意加1是因为数组索引从0开始计数
} else {
printf("No such number found.\n");
}
return 0;
}
```
在这个程序中,`binarySearch`函数接收一个排序好的整型数组、数组长度以及要查找的目标数,执行折半查找算法。如果找到目标数,返回其在数组中的索引;如果没有找到,返回-1。
阅读全文