Задать вопрос
@Moskaa

Бинарный поиск. Правильно ли работает?

def binarSearch(list, value):
    i = 0
    first = 0
    last = len(list) - 1;
    middle = int((first + last) / 2)

    while value != list[middle]:
        if value < list[middle]:
            last = middle
            middle = int((first + last) / 2)

        elif value > list[middle]:
            first = middle + 1
            middle = int((first + last) / 2)

        if i == middle - 1 or i >= 5 and len(list) <= 4:
            return -1

        i += 1

    return value

Это код бинарного поиска, писал сам. Совсем недавно начал его изучать и мне всегда казалось, что в реализации это очень сложный алгоритм, но я написал его достаточно быстро и понял всю суть. И меня волнует, что это казалось так легко. И у меня вопрос: я правильно написал код? Если да, то можно ли его как-то оптимизировать. Но если нет, то что не так?
  • Вопрос задан
  • 160 просмотров
Подписаться 1 Простой Комментировать
Решение пользователя fenrir К ответам на вопрос (2)
fenrir1121
@fenrir1121
Начни с документации
Нет, не правильно.
1) Возвращается значение, вместо индекса
2) На пустом массиве будет ошибка
К алгоритму не относится, но т.к реализовано на питоне
3) list это ключевое слово в языке, крайне не рекомендуется его переопределять.
Ответ написан