【发布时间】:2022-11-26 21:19:52
【问题描述】:
我试图对列表 CardData=[11,12,25,33,52,56,57,59,85,91] 进行二进制搜索
这是我的二进制搜索方法
def binsea(x,CardData):
front=0
back=len(CardData)
mid=len(CardData)//2
found=False
while front<back and found==False:
if x==CardData[mid]:
found=True
print(x,"is found at position",mid)
elif x<CardData[mid]:
back=mid
mid=(front+back)//2
elif x>CardData[mid]:
front=mid
mid=(front+back)//2
else:
print(x,"not found.")
它可以在列表中找到数据,但不会对此调用执行任何操作。
binsea(55,CardData)
求助
def binsea(x,CardData):
front=0
back=len(CardData)
mid=len(CardData)//2
found=False
while front<back and found==False:
if x==CardData[mid]:
found=True
print(x,"is found at position",mid)
elif x<CardData[mid]:
back=mid
mid=(front+back)//2
elif x>CardData[mid]:
front=mid
mid=(front+back)//2
else:
print(x,"not found.")
binsea(55,CardData)
我期待输出“55 not found”。
【问题讨论】:
-
很容易理解为什么它不起作用:你的 3 个 if、elif、elif 语句涵盖了所有可能的情况,所以 else 永远不会执行!此外,前、中、后 = 4、4、5 的循环永远继续下去。
标签: python