定义一个函数mfind(low,high,mid),实现在一个有序的列表里面查找用户输入的数x,如果x存在那么函数的返回值为x的索引,如果不存在,则函数的返回值为x不存在。 2、主程序中生成列表lst,有20个元素,且元素均为1-10
时间: 2024-03-12 13:43:05 浏览: 49
好的,下面是代码实现:
```python
def mfind(low, high, mid):
if lst[mid] == x:
return mid
elif lst[mid] < x:
return mfind(mid+1, high, (mid+1+high)//2) if mid+1 <= high else "x不存在"
else:
return mfind(low, mid-1, (low+mid-1)//2) if low <= mid-1 else "x不存在"
# 生成列表lst,有20个元素,元素均为1-10
import random
lst = [random.randint(1, 10) for _ in range(20)]
lst.sort()
print(lst)
# 用户输入要查找的数x
x = int(input("请输入要查找的数x:"))
# 调用函数进行查找
result = mfind(0, len(lst)-1, len(lst)//2)
# 输出查找结果
print(result)
```
解释一下代码:
首先,定义了一个名为 `mfind()` 的函数,接受三个参数 `low`,`high` 和 `mid`,分别表示当前查找范围的左端点、右端点和中间点的索引。
在函数内部,首先判断中间点的值是否等于要查找的数 `x`,如果相等则返回中间点的索引。
如果中间点的值小于要查找的数 `x`,则说明要查找的数在中间点的右侧,递归调用 `mfind()` 函数,在右半部分中查找。
如果中间点的值大于要查找的数 `x`,则说明要查找的数在中间点的左侧,递归调用 `mfind()` 函数,在左半部分中查找。
如果左右两侧都没有找到要查找的数,则说明该数不存在,返回字符串 "x不存在"。
在主程序中,首先生成一个长度为 20 的有序列表 `lst`,元素均为 1-10 的随机整数,然后让用户输入要查找的数 `x`,最后调用 `mfind()` 函数进行查找,将查找结果输出。
阅读全文