Является ли этот поиск бинарным?

# Бинарный поиск

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 уменьшается на единицу, то есть по факту же идет обычный поиск.
Не догоняю почему код как бы производит бинарный поиск как бы
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Бинарный если исправить ошибку вычисления mid
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы