Курс Python → Бинарный поиск

Алгоритм бинарного поиска — это эффективный метод поиска элемента в отсортированном массиве. Он основан на принципе «разделяй и властвуй», который позволяет быстро сузить область поиска. Для начала работы алгоритм принимает отсортированный список, в котором будет осуществляться поиск. Затем алгоритм постоянно сравнивает значение поиска с серединой массива.

В зависимости от результата сравнения, алгоритм либо сужает область поиска до левой или правой половины массива, либо находит искомый элемент. Этот процесс продолжается до тех пор, пока не будет найден искомый элемент или область поиска сузится до пустого массива. Благодаря этому непрерывному делению массива на две части, алгоритм обеспечивает логарифмическую временную сложность.


def binary_search(arr, target):
    low = 0
    high = len(arr) - 1
    
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    
    return -1

Пример кода выше представляет функцию бинарного поиска на Python. Она принимает отсортированный массив и значение, которое необходимо найти в этом массиве. Функция последовательно сравнивает значение поиска с серединой массива и сужает область поиска до тех пор, пока не будет найден искомый элемент или область поиска не станет пустой. Если элемент найден, функция возвращает его индекс в массиве, в противном случае возвращается -1.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Python Тесты и Гайды
  2. Работа с изображениями Pillow
  3. Работа с временем в Python
  4. Работа с deque из collections
  5. Выход из профиля в Django
  6. Реализация операции -= для пользовательского класса
  7. Транспонирование 2D-массива с помощью zip
  8. Резервирование символов в Python
  9. Добавление вложенных списков
  10. Функциональное программирование.
  11. Создание вкладок с TKinter
  12. Списковый компрехеншен.
  13. Сортировка данных с лямбда-функциями
  14. Оптимизация памяти с __slots__
  15. Python groupby() из itertools: работа с повторяющимися элементами
  16. Создание новой даты в Python
  17. globals и locals
  18. Игра «Угадывание чисел»
  19. Расчет времени выполнения
  20. Именованные срезы в Python
  21. Условные выражения в Python
  22. Расширение информации об ошибке в Python
  23. Таймер обратного отсчета
  24. Метод __ilshift__ для битового сдвига влево
  25. Работа с типами данных в Python с помощью pydantic.
  26. Преобразование символов в нижний регистр
  27. Создание множества в Python
  28. Однострочники Python
  29. Управление контекстом выполнения
  30. Отправка HTTP-запросов в Python
  31. Python itertools combinations() — группировка элементов
  32. Пустой оператор pass в Python
  33. Декораторы с @wraps
  34. Удаление элементов из списка в Python
  35. Поиск самого частого элемента
  36. Вычисление фазы комплексного числа
  37. Метод lt для сортировки объектов
  38. Деление в Python
  39. Наследование в программировании
  40. Многострочные строки в Python
  41. Вычисление натурального логарифма в NumPy
  42. Атрибуты класса и экземпляра
  43. Сравнение def и lambda-функций
  44. Экспорт внешнего файла с помощью writefile

Marketello читают маркетологи из крутых компаний