Не работает бинарный поиск. Не ищет элемент под индексом №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('Искомое число не содержится в списке')
→ Ссылка