Курс 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. Combobox в Tkinter
  3. Освобождение памяти в Python
  4. Объединение словарей в Python
  5. Отправка POST запроса на сервер.
  6. Фильтрация данных в Python.
  7. Вложенные генераторы в Python
  8. Установка максимального количества цифр
  9. Нахождение пересечения множеств
  10. Работа с каталогами в Python
  11. F-строки в Python 3.8
  12. Работа с timedelta
  13. Декораторы в Python
  14. Работа с PosixPath() в Python
  15. Переменная с нижним подчеркиванием
  16. Разработка игры Pong с turtle
  17. Область видимости переменных
  18. Создание .exe файла с pyinstaller
  19. Поиск индексов подстроки
  20. Структурирование данных с Pydantic
  21. Лямбда-функции в Python
  22. Отступы в Python
  23. Сортировка с помощью параметра key
  24. Метод join() для объединения элементов
  25. Логические значения в Python
  26. Рекурсия для обращения строки
  27. Функция all() в Python
  28. Модуль functools в Python
  29. Обновление данных через PUT запрос
  30. Создание графики с черепахой
  31. Декораторы с @wraps
  32. Резервирование символов в Python
  33. Подсчет количества элементов в списке
  34. Просмотр внешних файлов в %pycat
  35. Функция rsplit() в Python
  36. Списковое включение в Python
  37. Перетасовка списков в Python
  38. Лямбда-функции в цикле
  39. Преобразование символов в нижний регистр
  40. Обработка исключений в Python
  41. Активация Matplotlib в Jupyter
  42. Генераторы по генератору
  43. Многострочные строки в Python
  44. Работа с кортежами в Python
  45. Отладка производительности Python
  46. Метод radd для пользовательских чисел
  47. Нахождение хеша для бесконечности и NaN в Python

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