Я пробовал следующий алгоритм 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] ввести номер: , если сказать Eg я дать вход в 25, который дает мне бесконечный цикл ...
Ваших отступов плохо: 'в то время как низкий <= высокие:' имеет ничего отступ после этого, 'break' заявление не является в цикле, и т.д. Пожалуйста, покажите нам код, который фактически дает результат, который вы укажете. См. [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). Правильно отформатируйте свой код путем копирования и вставки из исходного исходного кода, затем выделите код и нажмите кнопку '{}' в редакторе. –