Курс 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. Многопоточность в Python
  3. Counter() — подсчет элементов
  4. Python enumerate() использование
  5. Удаление ссылок в Python
  6. Объединение итераторов
  7. Форматирование даты с strftime()
  8. Метод get для словарей
  9. Переворот списка в Python
  10. Генераторы в Python
  11. Сложение матриц в NumPy
  12. Переопределение метода __rshift__
  13. Сохранение Unicode в JSON
  14. Форматирование строк в Python
  15. inspect в Python: анализ кода
  16. Пространство имен в Python
  17. Кортеж в Python: создание и использование
  18. Декораторы для регистрации функций
  19. Оператор += в Python
  20. Python: отсутствие точек с запятыми
  21. Перегрузка операторов в Python
  22. Методы Python для работы с данными
  23. Функция zip() для объединения списков
  24. Присоединение элементов коллекции
  25. Python groupby() из itertools: работа с повторяющимися элементами
  26. Функции-генераторы в Python
  27. Создание и операции с дробями
  28. Сортировка данных с лямбда-функциями
  29. Использование defaultdict в Python
  30. Поиск частого элемента
  31. Оператор @ для умножения матриц
  32. Транспонирование матрицы
  33. Импорт модуля из другого каталога
  34. Проверка на истинность объектов в Python
  35. Модуль itertools: эффективная работа с итераторами
  36. Аргумент по умолчанию
  37. ChainMap.new_child() — добавление нового словаря
  38. Извлечение аудио из видео
  39. Переопределение метода xor в Python
  40. Управление импортом в Python
  41. Работа с контекстными переменными
  42. Присвоение значений переменным в Python
  43. Генерация резюме в Gensim
  44. Lambda-функция в Python: использование с map() и sum()
  45. Проблема с изменяемыми аргументами
  46. Ускоренный импорт библиотек
  47. Форматирование строк в Python

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