c语言 判断一个数是否是数组中的成员(用二分法查找)。数组a中有10个已排序的整数(由小到大排列)。从键盘上输入一个数,判断这个数是否是数组a中的数,如果是的话,打印出此数在数组a中的位置,否则打印“找不到”。 【实现提示】 ① 设待查找的数为x,设三个位置变量l、m、h分别代表查找范围的顶部、中间位置和底部,m=(l+h)/2,把数分成以a[m]为中点的两段范围; ② 判断x 是否等于a[m],假设是,则找到; ③ 假设大于a[m],则x必在后半段范围,即在a[m+1]至a[h]。舍弃前半段,再在后半段重新划分两段范围,定出l、m和h,重复以上步骤,逐步缩小查找范围。
时间: 2024-02-12 19:08:27 浏览: 25
好的,这是一个经典的二分查找问题,以下是代码实现:
```c
#include <stdio.h>
int binary_search(int a[], int n, int x)
{
int l = 0, h = n - 1, m;
while (l <= h) {
m = (l + h) / 2;
if (x == a[m])
return m;
else if (x < a[m])
h = m - 1;
else
l = m + 1;
}
return -1;
}
int main()
{
int a[10] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int n = 10, x, index;
printf("请输入要查找的数:");
scanf("%d", &x);
index = binary_search(a, n, x);
if (index == -1)
printf("找不到\n");
else
printf("%d 在数组中的位置是:%d\n", x, index + 1);
return 0;
}
```
代码中,binary_search() 函数用来实现二分查找,其中 a[] 为已排序的数组,n 为数组长度,x 为需要查找的数。函数返回值为 x 在数组中的下标(从 0 开始计数),如果找不到则返回 -1。
在 main() 函数中,首先定义了一个已排序的数组 a[],然后从键盘输入一个数 x 并调用 binary_search() 函数进行查找,最后根据查找结果输出相应信息。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)