【发布时间】:2020-12-04 22:42:08
【问题描述】:
这是执行二分查找的常用程序
def binary_search(lst,num):
fl=0
low=0
high=len(lst)
while low<=high :
mid=int((low+high)/2)
if lst[mid]==num :
fl=1
print ('Number Found at index:',mid)
break
elif lst[mid]>num :
low=mid+1
else :
high=mid-1
if fl==0 :
print ('Number Not Found')
lst=eval(input("Enter a sorted list:")
num=int(input("Enter a number to find:")
binary_search(lst,num)
问题
如果我想搜索和打印元素的索引,如果它在列表/数组中出现超过 1 次,我该怎么办
示例: List= [1,1,1, 2,3,4,5]
我想搜索 1 并且它存在 3 次,所以我想打印所有 3 个索引,例如:-
在索引处找到的数字:0
在索引处找到的数字:1
在索引处找到的数字:2
(必须进行二进制搜索)
【问题讨论】:
-
您可以采用两种方法:(1) 找到一个元素后,您可以前后扫描以找到第一个和最后一个,或者 (2) 您可以进行两次二进制搜索,一个它找到第一个实例,一个找到最后一个实例。哪个更快取决于您期望的重复次数。
标签: python python-3.x loops arraylist binary-search