利用python请编程实现: 1、定义-一个函数mfind(low,high,mid), 实现在一个有序的列表里面查找用户输入的数x,如果x存在那么函数的返回值为x的索引,如果不存在,则函数的返回值为x不存在。 2、主程序中生成列表Ist,有20个元素,且元素均为1-1000范围内的随机整数。 3、x从键盘输入,并进行测试
时间: 2024-03-13 18:46:56 浏览: 79
可以使用以下代码实现:
```python
import random
def mfind(low, high, mid):
if low <= high:
if lst[mid] == x:
return mid
elif lst[mid] < x:
return mfind(mid + 1, high, (mid + 1 + high) // 2)
else:
return mfind(low, mid - 1, (low + mid - 1) // 2)
else:
return -1
lst = [random.randint(1, 1000) for _ in range(20)]
lst.sort()
print("生成的列表为:", lst)
x = int(input("请输入要查找的数:"))
index = mfind(0, len(lst) - 1, len(lst) // 2)
if index >= 0:
print(f"{x} 的索引为:{index}")
else:
print(f"{x} 不存在")
```
在上面的代码中,我们首先定义了一个递归函数 `mfind`,用于在有序列表 `lst` 中查找给定的数 `x`。函数接受三个参数,分别为查找范围的起始位置 `low`、终止位置 `high`,以及中间位置 `mid`。函数的返回值为 `x` 的索引,如果 `x` 不存在,则返回 -1。
在函数内部,我们首先判断当前查找范围是否为空,如果是则返回 -1。否则,我们比较中间位置 `mid` 对应的值与 `x` 的大小关系。如果相等,则直接返回中间位置的索引;如果小于 `x`,则递归查找右半部分;如果大于 `x`,则递归查找左半部分。
在主程序中,我们首先生成一个由 20 个随机整数组成的列表 `lst`,并对其进行排序。然后,我们使用 `input` 函数获取用户输入的数 `x`,并调用 `mfind` 函数在列表 `lst` 中查找 `x`。最后,根据函数返回值的不同,输出不同的结果。
请注意,上面的代码只适用于有序列表。如果列表没有排序,或者是无序的,那么查找算法可能会失败。在实际使用中,需要根据具体情况选择合适的查找算法。
阅读全文