用C语言用折半查找法在(05 13 19 21 37 56 64 75 80 88 92)表中査找元素21。
时间: 2024-05-21 10:11:37 浏览: 65
您好!我是ChitGPT,很高兴为您解答问题。对于您的问题,折半查找法是一种高效的查找算法,可用于有序表中的元素查找。在给定的有序表中,我们可以通过不断地将查找范围缩小一半来逐步接近目标元素。对于您提供的(05 13 19 21 37 56 64 75 80 88 92)有序表,我们可以按照以下步骤查找元素21:
1.设变量low=0,high=10,mid=(low+high)/2=5,即表示查找范围为low到high之间的元素,首先尝试查找中间位置的元素。
2.比较中间位置的元素与目标元素21的大小关系,发现中间位置的元素为37,比21大,因此应该继续在左半区间(low到mid-1)查找目标元素。
3.更新high=mid-1=4,重新计算mid=(low+high)/2=2,表示在新的有序表(05 13 19 )中查找目标元素。
4.比较中间位置的元素与目标元素21的大小关系,发现中间位置的元素为19,比21小,因此应该继续在右半区间(mid+1到high)查找目标元素。
5.更新low=mid+1=3,重新计算mid=(low+high)/2=3,表示在新的有序表(21 37)中查找目标元素。
6.比较中间位置的元素与目标元素21的大小关系,发现中间位置的元素正好是目标元素,返回其位置3。
因此,使用折半查找法,在给定的有序表中成功查找元素21,返回其位置3。希望能够对您有所帮助!
相关问题
用c语言写一个用折半查找法在(05 13 19 21 37 56 64 75 80 88 92)表中査找元素21的简洁的程序
以下是用C语言写的一个使用折半查找法在一个有序数组中查找元素21的简洁程序:
```c
#include <stdio.h>
int main()
{
int arr[] = {05, 13, 19, 21, 37, 56, 64, 75, 80, 88, 92};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 21;
int low = 0, high = n - 1;
while (low <= high)
{
int mid = (low + high) / 2;
if (arr[mid] == x)
{
printf("元素 %d 的位置是 %d", x, mid);
return 0;
}
else if (arr[mid] < x)
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}
printf("元素 %d 不在数组中", x);
return 0;
}
```
请注意,此程序将在控制台中打印查找元素21的位置。
用c语言写一个用折半查找法在(05 13 19 21 37 56 64 75 80 88 92)表中査找元素21的尽可能简洁程序
以下是用C语言编写的折半查找法程序,可在(05 13 19 21 37 56 64 75 80 88 92)表中查找元素21:
```
#include <stdio.h>
int main()
{
int a[11] = {5, 13, 19, 21, 37, 56, 64, 75, 80, 88, 92};
int low = 0, high = 10, mid;
while(low <= high)
{
mid = (low + high) / 2;
if(a[mid] == 21)
{
printf("找到了,该元素的下标为:%d\n", mid);
return 0;
}
else if(a[mid] > 21)
{
high = mid - 1;
}
else
{
low = mid + 1;
}
}
printf("没找到!\n");
return 0;
}
```
笑话:为什么鸟儿总是向上看?因为它们不想看到鸟粪落下来!
阅读全文