用C语言用折半查找法在(05 13 19 21 37 56 64 75 80 88 92)表中査找元素21。
时间: 2024-05-21 13:11:37 浏览: 67
您好!我是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。
折半查找法,也称二分查找,是一种高效的查找算法,在有序数组中查找一个元素的时间复杂度为 O(log n)。
具体步骤如下:
1. 定义变量:left = 0,right = n-1,mid = (left + right) / 2。
2. 判断中间元素是否等于要查找的元素,如果是则返回其下标;如果不是,则继续执行下一步。
3. 如果中间元素大于要查找的元素,则在左半部分继续查找,即令 right = mid - 1;否则在右半部分查找,即令 left = mid + 1。
4. 重复步骤2和步骤3,直到找到要查找的元素或者 left > right。
按照上述步骤进行折半查找,可以得到元素21的下标为3。
具体代码如下:
```
#include <stdio.h>
int binary_search(int arr[], int n, int target) {
int left = 0, right = n-1, mid;
while (left <= right) {
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[] = {5, 13, 19, 21, 37, 56, 64, 75, 80, 88, 92};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 21;
int index = binary_search(arr, n, target);
if (index == -1)
printf("未找到元素%d", target);
else
printf("元素%d的下标为%d", target, index);
return 0;
}
```
用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;
}
```
笑话:为什么鸟儿总是向上看?因为它们不想看到鸟粪落下来!
阅读全文