程序填空题:折半查找(高教社,《Python编程基础及应用》习题6-12)
折半查找算法:先把被查找值与序列中间位置的元素比较,如果相等表示已找到。如果查找值 < 中位元素,这说明查找值在中位元素的左边,如果查找值 > 中位元素,则说明查找值在中位元素的右边。每进行一次比较,我们大概可以把查找范围缩小一半。这种同中位元素进行比较的方法可以一直持续下去,直到找到或者发现找不到为止。最坏情况下,我们要进行logN次比较,N为序列的长度。
下述程序中的binarySearch()函数通过折半查找从列表a中查找并打印元素89的下标。请将其补充完整。
python
def binarySearch(s,v):
begin,end = 0, len(s)-1
while begin <= end:
mid =
if s[mid] == v:
print("Found:%d" % mid)
break
elif v > s[mid]:
else:
end = mid - 1
else:
print("Not found")
a = [1,3, 12, 45, 66, 89, 123, 154, 768, 9921]
binarySearch(a,89)
<br>**拼尽全力还是不会?参考B站习题讲解**<br>哔哩哔哩up主:[海洋饼干叔叔](https://space.bilibili.com/384177380) [Python课程](https://www.bilibili.com/video/BV1kt411R7uW/) [Python习题](https://www.bilibili.com/video/BV1iL411t7UZ/)[简洁的C和C++](https://www.bilibili.com/video/BV1it411d7zx/)作者每天分享一篇关于C/C++/Python的技术文章,学习编程不迷路。![image.png](~/7c4cfd2d-8e3e-40cd-826d-299d4200e600.png)
答案:
第1空:(begin+end)//2
第2空:begin = mid + 1
下述程序中的binarySearch()函数通过折半查找从列表a中查找并打印元素89的下标。请将其补充完整。
python
def binarySearch(s,v):
begin,end = 0, len(s)-1
while begin <= end:
mid =
if s[mid] == v:
print("Found:%d" % mid)
break
elif v > s[mid]:
else:
end = mid - 1
else:
print("Not found")
a = [1,3, 12, 45, 66, 89, 123, 154, 768, 9921]
binarySearch(a,89)
<br>**拼尽全力还是不会?参考B站习题讲解**<br>哔哩哔哩up主:[海洋饼干叔叔](https://space.bilibili.com/384177380) [Python课程](https://www.bilibili.com/video/BV1kt411R7uW/) [Python习题](https://www.bilibili.com/video/BV1iL411t7UZ/)[简洁的C和C++](https://www.bilibili.com/video/BV1it411d7zx/)作者每天分享一篇关于C/C++/Python的技术文章,学习编程不迷路。![image.png](~/7c4cfd2d-8e3e-40cd-826d-299d4200e600.png)
答案:
第1空:(begin+end)//2
第2空:begin = mid + 1