# Бинарный поиск
def binary_search(list, item):
low = 0 # начальная граница списка в которой осуществляется поиск
high = len(list) - 1 # позиция последнего элемента списка
while low <= high:# пока диапазон не сузится что они буду равны
mid = (low + high) # проверяем средний элемент
guess = list[mid]
if item == guess:
return mid
if guess > item:
high = mid - 1
else:
high = mid + 1
return none
my_list = [1, 3, 5, 7, 9]
print(binary_search(my_list, 3)) # выводит порядковый номер наденного элемента
Ведь по факту в бинарном поиске массив или список разделяется на два , а вернее находится логарифм числа от двойки.
то есть log2(8) = 3 То есть логарифм числа 8 от двойки это тройка и бинарный поиск начинается поиск с середины.
А в выше описанном кода число Mid уменьшается на единицу, то есть по факту же идет обычный поиск.
Не догоняю почему код как бы производит бинарный поиск как бы