Не работает бинарный поиск. Не ищет элемент под индексом №0. (Python)
Бинарный поиск в Python не ищет элемент под индексом №0. Код прикрепил.
import random
def bin_search(myList, item):
low = 0
high = len(myList) - 1
while low <= high:
mid = (low + high) // 2
if myList[mid] == item:
return mid
elif myList[mid] > item:
high = mid - 1
elif myList[mid] < item:
low = mid + 1
else:
return False
myList = [random.randint(1, 100) for i in range(10)]
myList.sort()
print(myList)
item = int(input('Введите искомое число: '))
result = bin_search(myList, item)
if result:
print('Искомое число имеет индекс: ', result)
else:
print('Искомое число не содержится в списке')
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Если хотите "нормальное решение", то логичнее всего сделать так же, как это сделано в некоторых функциях поиска подстроки в языках программирования - возвращать в случае неудачи поиска -1 и проверять на выходе на это значение:
import random
def bin_search(myList, item):
low = 0
high = len(myList) - 1
while low <= high:
mid = (low + high) // 2
if myList[mid] > item:
high = mid - 1
elif myList[mid] < item:
low = mid + 1
else:
return mid
return -1
myList = [random.randint(1, 100) for i in range(10)]
myList.sort()
print(myList)
item = int(input('Введите искомое число: '))
result = bin_search(myList, item)
if result >= 0:
print('Искомое число имеет индекс: ', result)
else:
print('Искомое число не содержится в списке')