我写了下面的代码:Python的 - 改变我的二进制搜索功能
def binary_search(key,lst):
""" iterative binary search
lst better be sorted for binary search to work"""
n=len(lst)
lower=0
upper=n-1
outcome=None # default value
while lower<=upper:
middle=(upper+lower)//2
if key==lst[middle].name: # item found
outcome=lst[middle]
break # gets out of the loop if key was found
elif key<lst[middle].name: # item cannot be in top half
upper=middle-1
else: # item cannot be in bottom half
lower=middle+1
return outcome
我试图改变它,以使其将列表3份,而不是2 我的意思是它不会可以进行二分搜索,但是对于每次迭代,算法会将列表分成3个部分。
我无法执行此操作。
任何帮助将不胜感激。
你为什么要分成三部分?二进制搜索的优点是你不需要做太多的比较(每次迭代只需要一次)。有三个部分,你需要在很多情况下做两个比较(如果第一个比较结果给出了合适的结果,你可能会发生短路),这大大减少了搜索空间从1/2到1/3的好处迭代。 – Blckknght 2013-04-09 19:11:11
这是一项任务。我知道这不是更有效率。 – 2013-04-09 19:20:53