-1
我已經嘗試了以下Python算法的二進制搜索,這是給我錯誤的連續循環時搜索值不在列表中,它應該只是簡單地給o/p爲「找不到」,我嘗試的另一種方法是功能運行良好,但功能不允許使用,我沒有得到錯誤的地方?使用Python的二進制搜索
M = [4,5,6,7,8,9,20,17,45]
print(M)
num = int(input("enter the number: "))
k=True
low=0
high=len(M)-1
mid=(low-high)//2
while low<=high:
print(mid)
if num == M[mid]:
print("Number found")
k=False
break
else:
if num < M[mid]:
high = mid
mid = (low+high)//2
k=True
else:
low=mid
mid=(mid+high)//2
k=True
if k==True:
print("not found")
在O/P顯示
當[4,5,6,7,8,9,20,17,45] 輸入號碼: 如果說對於例如I給輸入25這是給我無限循環......
你壓痕不好:'而低<=高:'無關後縮進,在'break'語句不是在一個循環等,請向我們展示代碼實際上給你你說的結果。請參見[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。通過從原始源代碼複製粘貼來正確地設置代碼的格式,然後突出顯示代碼並單擊編輯器中的「{}」按鈕。 –