生成代码,要求:将15个数按由小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素。 如果该数不在数组中,则输出“无次数”。
时间: 2024-03-05 17:55:09 浏览: 78
好的,以下是代码实现:
```c
#include <stdio.h>
// 折半查找函数
int binarySearch(int arr[], int len, int key) {
int left = 0, right = len - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (key == arr[mid]) {
return mid;
} else if (key < arr[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1; // 没找到返回-1
}
int main() {
int arr[15] = {2, 3, 5, 7, 8, 10, 11, 14, 15, 18, 20, 22, 25, 28, 30};
int len = sizeof(arr) / sizeof(arr[0]);
printf("请输入要查找的数:");
int key;
scanf("%d", &key);
int idx = binarySearch(arr, len, key);
if (idx != -1) {
printf("%d 是数组中第 %d 个元素。\n", key, idx+1);
} else {
printf("无此数。\n");
}
return 0;
}
```
代码中的 `binarySearch` 函数实现了折半查找,该函数接收3个参数:数组 `arr`、数组长度 `len` 和要查找的关键字 `key`,返回该关键字在数组中的下标,如果没找到则返回 -1。
在主函数中,先定义了一个有序数组 `arr`,然后输入要查找的数 `key`,最后调用 `binarySearch` 函数查找 `key` 在数组中的位置,并输出结果。
希望能够解决您的问题。
阅读全文