任意输入10个数,先将其按由大到小的顺序排列;再输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”
时间: 2023-04-27 08:03:34 浏览: 130
可以使用以下步骤来解决这个问题:
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`函数将它们按照由大到小的顺序排列。然后输入要查找的数,使用折半查找法查找该数在数组中的位置。如果找到了该数,则打印出它在数组中的位置;否则打印出“无此数”。