已知一个数组有10个整数元素,该数组从大到小已经排序,从键盘输入一个数,用折半查找的方法查找并输出位置,若未找到输出“查无此数”;
时间: 2023-04-23 21:02:45 浏览: 312
可以使用折半查找的方法在已排序的数组中查找输入的数。具体步骤如下:
1. 从键盘输入一个数,保存到变量中。
2. 定义两个变量left和right,分别表示数组的左右边界。初始时,left为0,right为数组长度减1。
3. 进入循环,判断left是否小于等于right。如果不成立,说明已经查找完毕,未找到该数,输出“查无此数”。
4. 计算中间位置mid,即mid=(left+right)/2。
5. 判断中间位置的数是否等于输入的数。如果相等,说明已经找到该数,输出位置mid。
6. 如果中间位置的数大于输入的数,说明要查找的数在左半部分,将right更新为mid-1。
7. 如果中间位置的数小于输入的数,说明要查找的数在右半部分,将left更新为mid+1。
8. 回到步骤3,继续查找。
下面是示例代码:
```python
# 定义已排序的数组
arr = [10, 8, 6, 5, 4, 3, 2, 1, 0, -1]
# 从键盘输入一个数
num = int(input("请输入要查找的数:"))
# 定义左右边界
left = 0
right = len(arr) - 1
# 进入循环
while left <= right:
# 计算中间位置
mid = (left + right) // 2
# 判断中间位置的数是否等于输入的数
if arr[mid] == num:
print("位置为:", mid)
break
# 如果中间位置的数大于输入的数,更新右边界
elif arr[mid] > num:
right = mid - 1
# 如果中间位置的数小于输入的数,更新左边界
else:
left = mid + 1
else:
print("查无此数")
```
注意,这里使用了else语句,它会在while循环正常结束时执行,即当left>right时。如果在循环中找到了该数,会执行break语句跳出循环,此时else语句不会执行。如果循环结束时仍未找到该数,会执行else语句输出“查无此数”。
阅读全文