Struchkov Mark
bd6b7c1492
All checks were successful
continuous-integration/drone/push Build is passing
39 lines
3.0 KiB
Markdown
39 lines
3.0 KiB
Markdown
---
|
||
aliases:
|
||
tags:
|
||
- maturity/🌱
|
||
date: 2024-04-07
|
||
zero-link:
|
||
- "[[../../meta/zero/00 Алгоритм|00 Алгоритм]]"
|
||
parents:
|
||
linked:
|
||
---
|
||
Один их самых простых алгоритмов – это поиск элемента в отсортированном массиве. Это самая базовая алгоритмическая задача, которую нередко спрашивают на собеседованиях.
|
||
|
||
С одной стороны, для подобных алгоритмов используют уже готовые функции стандартной библиотеки, с другой – подобные вопросы на собеседованиях позволяют узнать полезное о кандидате.
|
||
|
||
Первое что приходи на ум: перебор элементов в массиве до нужного, тогда если количество элементов равно n и нужный нам элемент будет последним, нам потребуется сделать n проверок элементов до нахождения нужного, про такой случай и говорят что сложность алгоритма равна O(n).
|
||
|
||
Рассмотрим другой подход - бинарный поиск – возьмем средний элемент отсортированного массива и сравним его c искомым. Если элемент меньше – продолжим поиск в левой части массива, если больше в правой, пока не останется нужный элемент. Таким образом нам понадобится число операций равное тому, сколько раз нам нужно поделить массив размером n пополам.
|
||
|
||
Например, для массива в 16 элементов мы сначала поделим его на два по 8, потом 8 на два по 4, потом 4 на два по 2 и на конец 2 пополам, те всего 4 операции в худшем случае. Такое число равно двоичному логарифму.
|
||
|
||
Реализации:
|
||
- [Бинарный поиск на Java](../java/Бинарный%20поиск%20на%20Java.md)
|
||
|
||
***
|
||
## Мета информация
|
||
**Область**:: [[../../meta/zero/00 Алгоритм|00 Алгоритм]]
|
||
**Родитель**::
|
||
**Источник**::
|
||
**Автор**:: [[2024-04-07]]
|
||
**Создана**::
|
||
### Дополнительные материалы
|
||
-
|
||
### Дочерние заметки
|
||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||
- [[Бинарный поиск на Java]]
|
||
<!-- SerializedQuery END -->
|
||
|