有15个数按由大到小顺序存放在一个数组中,输人一个数,要求用折半查找法找出 该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。c语言解法
时间: 2024-05-05 10:21:00 浏览: 108
C语言程序设编写程序在数组中查找一个数要求 ⑴用顺序查找实现 ⑵用折半查找实现。 注:若有该数,则输出该数,否则输出“无此数”。
5星 · 资源好评率100%
以下是使用折半查找法在C语言中实现的代码:
```c
#include <stdio.h>
int binarySearch(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1; // 未找到
}
int main() {
int arr[15] = { 2, 3, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 };
int n = sizeof(arr) / sizeof(arr[0]);
int target;
printf("请输入要查找的数:");
scanf("%d", &target);
int index = binarySearch(arr, n, target);
if (index == -1) {
printf("无此数\n");
} else {
printf("该数是数组中第%d个元素的值\n", index + 1);
}
return 0;
}
```
运行代码后,程序会要求用户输入要查找的数,然后使用折半查找法在数组中查找该数。如果找到,输出该数在数组中的位置;如果未找到,输出“无此数”。
阅读全文