Курс 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. Исключение NotImplementedError
  3. Отслеживание выполнения программы с библиотекой tqdm
  4. Поиск частого элемента
  5. Обработка аргументов Python
  6. Комментарии в Python
  7. Работа со строками
  8. Срез списка в Python
  9. Работа с модулем glob в Python
  10. Лямбда-функции для min/max
  11. Работа с CSV файлами
  12. Проблема с изменяемыми аргументами
  13. Перевод эмодзи и эмотиконов.
  14. Работа с Enum в Python3.
  15. Операторы += в Python
  16. Работа с collections.Counter
  17. Библиотека wikipedia для Python
  18. Разделение строки с помощью split()
  19. Класс UserDict: дополнительная функциональность
  20. Форматирование строк в Python.
  21. Списковый компрехеншен.
  22. Измерение времени выполнения с помощью time
  23. Метод __call__ в Python
  24. Любовь к Python
  25. Списковое включение в Python
  26. Получение ID текущего процесса
  27. Генераторы в Python
  28. Инициализация переменных
  29. Разделение функций на этапы
  30. Многострочные строки в Python
  31. Аргумент по умолчанию
  32. Создание множества в Python
  33. Функция all() в Python
  34. List Comprehension Tutorial
  35. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  36. Генератор списка в Python
  37. Обновление ключей в Python
  38. Генераторы в Python
  39. Оптимизация методов в Python 3.7
  40. Работа с getopt
  41. Работа с парами ключ-значение
  42. Фильтрация списка от «ложных» значений
  43. Отношения подклассов в Python
  44. Изменение IP-адреса в Python
  45. Особенности запятых в Python
  46. Хранение данных

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