用c语言写出:有 15 个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法 找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。
时间: 2023-03-26 15:03:48 浏览: 238
2.有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序
5星 · 资源好评率100%
请看下面的代码:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int x) {
int left = , right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] > x) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
int main() {
int arr[15] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29};
int n = sizeof(arr) / sizeof(arr[]);
int x;
printf("请输入一个数:");
scanf("%d", &x);
int index = binary_search(arr, n, x);
if (index == -1) {
printf("无此数\n");
} else {
printf("%d 是数组中第 %d 个元素的值\n", x, index + 1);
}
return ;
}
```
这个程序可以实现折半查找法,找出输入的数在数组中的位置。如果该数不在数组中,则输出“无此数”。
阅读全文