用C语言做。折半查找:在一个有序的一维数组中,输入一个数,利用折半查找法找到该数是这个数组中的第几个数;如果该数不在数组中,则输出“No data!”输入格式:第一行输入一个整数n(1<=n<=15),表示该数组有几个数;第二行输入n个整型一维数组;第三行输入要查找的数。输出格式:如果找到该数,输出“It 's positionis4!”;如果没有找到,输出“No data!”。
时间: 2024-02-16 10:59:33 浏览: 34
好的,以下是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 - left) / 2;
if (arr[mid] == target) {
return mid + 1; // 找到了,返回位置(从1开始)
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 没找到,返回-1
}
int main() {
int n, target;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
scanf("%d", &target);
int pos = binarySearch(arr, n, target);
if (pos == -1) {
printf("No data!\n");
} else {
printf("It's position is %d!\n", pos);
}
return 0;
}
```
解释一下代码:
首先定义了一个 `binarySearch` 函数,接收三个参数:要查找的数组、数组长度、要查找的目标数。这个函数的返回值是目标数在数组中的位置,如果没找到则返回 -1。
在主函数中,首先读入数组的长度和数组元素。然后读入要查找的目标数。接下来调用 `binarySearch` 函数进行查找,并根据返回值打印结果。
需要注意的是,因为题目要求位置从1开始,所以在返回位置时需要加上1。
希望能帮到你!
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)