我正在学习Python用于算法目的。我学习了二进制搜索是如何工作的,并试图在Python代码中实现它,而无需咨询互联网。我还没有看过如何实现它,我想让我的代码首先工作。所以这就是问题所在。
代码正常工作,直到返回None的最后一步,而不是返回列表中已有的项目。请指导我如何纠正它。我使用pythontutor的在线可视化工具来可视化代码,并且返回值是正确的,直到最后一步,返回值变为无,我不明白如何。如果item不在列表中,我还希望“Base case”返回False,同时返回最终项目(最差情况项)。请查看我的代码以进行这两项修改。
的链接以下是代码
def binarysearch(array,element):
mid_index = len(array)//2
if len(array) == 1 and array[0] == element:
return element
elif element == array[mid_index]:
return element
elif element > array[mid_index]:
array = array[mid_index::]
binarysearch(array,element)
else:
array = array[0:mid_index]
binarysearch(array,element)
print(binarysearch([17,20,26,31,44,54,55,65,77,93],26))