digital-garden/dev/algorithm/Бинарный поиск.md
Struchkov Mark bd6b7c1492
All checks were successful
continuous-integration/drone/push Build is passing
Дочерние заметки
2024-09-14 23:38:42 +03:00

3.0 KiB
Raw Permalink Blame History

aliases tags date zero-link parents linked
maturity/🌱
2024-04-07
../../meta/zero/00 Алгоритм

Один их самых простых алгоритмов это поиск элемента в отсортированном массиве. Это самая базовая алгоритмическая задача, которую нередко спрашивают на собеседованиях.

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

Первое что приходи на ум: перебор элементов в массиве до нужного, тогда если количество элементов равно n и нужный нам элемент будет последним, нам потребуется сделать n проверок элементов до нахождения нужного, про такой случай и говорят что сложность алгоритма равна O(n).

Рассмотрим другой подход - бинарный поиск возьмем средний элемент отсортированного массива и сравним его c искомым. Если элемент меньше продолжим поиск в левой части массива, если больше в правой, пока не останется нужный элемент. Таким образом нам понадобится число операций равное тому, сколько раз нам нужно поделить массив размером n пополам.

Например, для массива в 16 элементов мы сначала поделим его на два по 8, потом 8 на два по 4, потом 4 на два по 2 и на конец 2 пополам, те всего 4 операции в худшем случае. Такое число равно двоичному логарифму.

Реализации:


Мета информация

Область:: ../../meta/zero/00 Алгоритм Родитель:: Источник:: Автор:: 2024-04-07 Создана::

Дополнительные материалы

Дочерние заметки