有15个数按小由到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数在数组中的下标。用c语言
时间: 2024-09-24 08:24:34 浏览: 60
有15个数按小由到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数在数组中的下标
折半查找法也叫做二分查找,它适用于已经排序好的数组中。以下是使用C语言实现折半查找算法的基本步骤:
```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) / 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_to_find;
printf("请输入一个数字:");
scanf("%d", &num_to_find);
int index = binarySearch(arr, sizeof(arr) / sizeof(arr[0]), num_to_find);
if (index != -1)
printf("数字 %d 的下标是 %d\n", num_to_find, index);
else
printf("数字 %d 不在数组中。\n", num_to_find);
return 0;
}
```
在这个程序中,`binarySearch`函数接收一个已排序的整型数组、数组长度和要查找的目标数。如果找到目标,返回其下标;找不到就返回-1。
阅读全文