任意输入10个数,先将其按由大到小的顺序排列;再输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。
时间: 2023-04-26 18:01:39 浏览: 239
可以使用以下步骤来实现这个需求:
1. 首先输入10个数,并使用排序算法将其按从大到小的顺序排列。
2. 然后输入一个数,使用折半查找法在已排序的数组中找到该数。
3. 如果找到了这个数,则输出它在数组中的第几个元素。如果没有找到,则输出“无此数”。
注意: 折半查找只能用于有序的数组.
相关问题
任意输入10个数,先将其按由大到小的顺序排列;再输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”
可以使用以下步骤来解决这个问题:
1. 输入10个数,并将它们按照由大到小的顺序排列。
2. 输入一个数,使用折半查找法来查找该数在数组中的位置。
3. 如果该数不在数组中,则打印出“无此数”。
下面是一个可能的实现:
```python
# 输入10个数
nums = []
for i in range(10):
num = int(input("请输入第{}个数:".format(i+1)))
nums.append(num)
# 将数组按照由大到小的顺序排列
nums.sort(reverse=True)
# 输入要查找的数
target = int(input("请输入要查找的数:"))
# 使用折半查找法查找该数在数组中的位置
left, right = 0, len(nums)-1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
print("该数在数组中的位置是:{}".format(mid+1))
break
elif nums[mid] > target:
left = mid + 1
else:
right = mid - 1
else:
print("无此数")
```
这个程序首先输入10个数,并使用`sort`函数将它们按照由大到小的顺序排列。然后输入要查找的数,使用折半查找法查找该数在数组中的位置。如果找到了该数,则打印出它在数组中的位置;否则打印出“无此数”。
c语言任意输入10个数,先将其按由大到小的顺序排列;再输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。
好的,这是一个比较典型的 C 语言题目,我们可以按照以下步骤来解决:
1. 排序:输入10个数,可以使用冒泡排序或者快速排序等算法将其按照从大到小的顺序排列,这里我简单给出一个冒泡排序的示例代码:
```c
#include<stdio.h>
int main()
{
int a[10], i, j, temp;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d", &a[i]); //输入10个数
for(i=0;i<9;i++) //进行冒泡排序
for(j=0;j<9-i;j++)
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
printf("排序后的结果为:\n");
for(i=0;i<10;i++)
printf("%d ", a[i]); //输出排序后的结果
printf("\n");
return 0;
}
```
2. 折半查找:输入一个数,可以使用折半查找法在已经排好序的数组中查找该数的位置,这里给出一个示例代码:
```c
#include<stdio.h>
int main()
{
int a[10], i, j, temp, num, low, high, mid; //定义变量
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d", &a[i]); //输入10个数
for(i=0;i<9;i++) //进行冒泡排序
for(j=0;j<9-i;j++)
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
printf("排序后的结果为:\n");
for(i=0;i<10;i++)
printf("%d ", a[i]); //输出排序后的结果
printf("\n");
printf("请输入要查找的数:\n");
scanf("%d", &num); //输入要查找的数
low=0; //初始化查找范围的上下限
high=9;
while(low<=high) //开始折半查找
{
mid=(low+high)/2;
if(num==a[mid])
{
printf("%d是数组中的第%d个元素。\n", num, mid+1);
break;
}
else if(num<a[mid])
high=mid-1;
else
low=mid+1;
}
if(low>high)
printf("无此数。\n"); //如果没找到,输出“无此数”
return 0;
}
```
以上就是完整的 C 语言代码,可以直接复制到编译器中运行,希望能够帮到您!
阅读全文