Курс 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. Создание генераторов
  2. Метод pop() списка
  3. Функция sleep() в Python
  4. Beautiful Soup — извлечение данных из HTML
  5. Настройка логгера Logzero
  6. Генераторные выражения и islice.
  7. Реверс строки и списка в Python.
  8. Получение ID текущего процесса
  9. Проверка запуска скрипта или импорта модуля
  10. Передача словаря через **kwargs
  11. Функция eval() в Python
  12. Быстрый поиск кода
  13. Копирование списков в Python
  14. Строковое представление объектов
  15. Печать месячного календаря
  16. Именованные срезы в Python
  17. Работа с timedelta
  18. Цикл for с enumerate() в Python
  19. Создание класса в Python
  20. Обработка ошибок ввода данных
  21. Проверка элемента в множестве.
  22. Принципы Zen Python
  23. JMESPath в Python
  24. Генератор чисел Фибоначчи
  25. Удаление дубликатов из списка с помощью dict.fromkeys
  26. Анонимные функции Lambda
  27. Методы обработки строк в Python
  28. Официальный канал Python в Telegram
  29. Сравнение def и lambda функций в Python
  30. Работа с функцией next() в Python
  31. Оператор объединения словарей
  32. Подсчет элементов в списке с Counter
  33. Логирование в Python
  34. Оператор zip в Python
  35. Генераторы в Python
  36. Установка и использование Python-dateutil
  37. Просмотр файла в Jupyter Noteboo
  38. Установка и использование модуля Wikipedia
  39. Метод title() в Python
  40. Работа с очередями в Python
  41. Форматирование данных с помощью pprint
  42. Методы __repr__ и __str__ в Python
  43. Метод pos в Python
  44. Основные операции с библиотекой Numpy
  45. Философия Python
  46. Обновление данных через PUT запрос
  47. Установка и использование Virtualenv

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