下述程序中的binarySearch()函数通过折半查找从列表a中查找并打印元素89的下标。请将其补充完整。 def binarySearch(s,v): begin,end = 0, len(s)-1 isfound = False while begin <= end: mid = # 取得中位元素在队列中的序号 if s == v: # 将中位元素与目标比较
时间: 2024-02-14 22:05:19 浏览: 100
折半查找 binarySearch
下面是将程序补充完整的代码:
```python
def binarySearch(s, v):
begin, end = 0, len(s) - 1
isfound = False
while begin <= end:
mid = (begin + end) // 2 # 取得中位元素在队列中的序号
if s[mid] == v: # 将中位元素与目标比较
isfound = True
print("Found: %d" % mid)
break
elif v > s[mid]:
begin = mid + 1 # 如果目标>中位元素,更新搜索的起始位置
else:
end = mid - 1 # 如果目标<中位元素,更新搜索的结束位置
if not isfound:
print("Not found")
```
这个函数使用了二分查找算法。它接收两个参数:一个有序的列表 s 和一个要查找的值 v。它首先将搜索的起始位置 begin 和结束位置 end 初始化为列表的起始位置和结束位置。在 while 循环中,它计算中位元素的位置 mid,并将其与目标值 v 进行比较。如果它们相等,它将打印出 mid 的值,并将 isfound 标志设为 True。如果 v 大于中位元素 s[mid],则将 begin 更新为 mid + 1;否则将 end 更新为 mid - 1。如果在循环结束时 isfound 仍然为 False,则打印出 "Not found"。在这个例子中,给定列表 a 中的值为 [1, 3, 12, 45, 66, 89, 123, 154, 768, 9921],要查找的值为 89,因此该函数打印出 "Found: 5",表示值 89 在列表的第 5 个位置。
阅读全文