Алгоритмы поиска
Бинарный поиск — O(log n): из 1 млн элементов за 20 шагов. Линейный — O(n): 1 млн шагов. Дейкстра и A* находят кратчайший путь в графах. Основа баз данных и навигаторов.
Алгоритмы поиска
Binary Search — бинарный поиск
Поиск в отсортированном массиве делением пополам. Сравнение с серединой, отбрасывание половины. Сложность O(log n). Рекурсивная и итеративная реализации. Требует предварительной сортировки.
Linear Search — линейный поиск
Последовательный перебор элементов до нахождения. Сложность O(n). Не требует сортировки. Применяется для малых массивов, несортированных данных, связных списков. Простейший алгоритм поиска.
Interpolation Search — интерполяционный поиск
Улучшение бинарного поиска для равномерно распределённых данных. Оценка позиции элемента по формуле интерполации. Средняя сложность O(log log n), худшая O(n). Эффективен для числовых диапазонов.
Exponential Search — экспоненциальный поиск
Поиск диапазона с удвоением индекса (1, 2, 4, 8...), затем бинарный поиск в диапазоне. Сложность O(log n). Эффективен для неограниченных массивов, когда размер неизвестен.
Jump Search — поиск прыжками
Прыжки по массиву с шагом √n, затем линейный поиск в блоке. Сложность O(√n). Требует сортировки. Компромисс между линейным и бинарным. Эффективен для систем с дорогими сравнениями.
Бинарный поиск
Поиск делением пополам в отсортированном массиве (идея из 1946). O(log n) сравнений. Требует random access. Основа для деревьев поиска, интерполяционного поиска.
Линейный поиск
Последовательный перебор элементов. O(n) в среднем и худшем случае. Единственный вариант для неотсортированных данных. Оптимален при однократном поиске.
Поиск хешированием
Вычисляет хеш ключа, получает адрес за O(1). Требует хеш-таблицу. Коллизии решаются цепочками или открытой адресацией. Самый быстрый для точного поиска.