编写一个采用折半查找法查找数组中的数的代码。 要求输入一个数组,数组的大小为5,首先将其按照从小到大的顺序排序。 然后输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出无此数。
时间: 2024-04-15 13:28:29 浏览: 77
2.有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序
5星 · 资源好评率100%
好的!以下是一个使用折半查找法在数组中查找指定数的代码示例:
```c
#include <stdio.h>
int binarySearch(int arr[], int size, int target) {
int left = 0;
int right = size - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid; // 找到目标数,返回索引
} else if (arr[mid] < target) {
left = mid + 1; // 目标数在右半部分,更新左边界
} else {
right = mid - 1; // 目标数在左半部分,更新右边界
}
}
return -1; // 数组中不存在目标数
}
int main() {
int arr[5];
int target;
printf("请输入数组元素(共5个): ");
for (int i = 0; i < 5; i++) {
scanf("%d", &arr[i]);
}
// 对数组进行排序(可以使用任何排序算法)
for (int i = 0; i < 5 - 1; i++) {
for (int j = 0; j < 5 - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
printf("请输入要查找的数: ");
scanf("%d", &target);
int result = binarySearch(arr, 5, target);
if (result == -1) {
printf("无此数\n");
} else {
printf("该数是数组中第%d个元素的值\n", result + 1);
}
return 0;
}
```
在这段代码中,我们首先定义了一个 `binarySearch` 函数,用于实现折半查找算法。然后,在 `main` 函数中,我们首先获取用户输入的数组元素,并对数组进行排序(这里使用了冒泡排序算法,你也可以使用其他排序算法)。接下来,我们获取用户输入的目标数,并调用 `binarySearch` 函数进行查找。最后,根据查找结果输出相应的信息。
注意:这里假设用户输入的数组元素已经按照从小到大的顺序排列。
希望对你有所帮助!如果还有其他问题,请随时提问。
阅读全文