Ваш вопрос

Надежда Тихонова
Надежда Тихонова

Датахакер

Решено 5 часов назад

Датахакер

Какой поиск быстрее бинарного?

Скрин с 27 слайда, там 4 кривые и нижняя не подписана,что это

Лучший ответ

4.20

11 часов назад

4.20

Какой поиск быстрее бинарного?

  • Да, такой поиск существует, называется интерполяционный поиск, и препод не выдумал, ты не путаешь.
  • Идея: вместо того чтобы всегда лезть строго в середину, как это делает бинарный поиск, интерполяционный вычисляет, где примерно должен быть искомый элемент, по формуле, учитывающей значения на границах диапазона и само искомое число.
  • Аналогия: ищешь слово на букву "я" в бумажном словаре, открываешь книгу почти в самом конце, а не строго посередине, потому что заранее прикидываешь, где эта буква примерно находится.
  • В лучшем случае, на равномерно распределённых числовых данных, интерполяционный поиск работает за O(log log n), это заметно быстрее логарифма бинарного поиска на больших массивах.
  • Подвох в том, что на неравномерных или сильно скученных данных интерполяционный поиск может деградировать до O(n), то есть до полного перебора, тогда как бинарный поиск всегда держит гарантию O(log n) независимо от распределения чисел.
  • На собесе для джуна обычно достаточно сказать: в общем случае бинарный поиск с гарантией log n почти всегда лучший выбор, интерполяционный поиск выигрывает только на специфических равномерных данных, и это скорее академический пример, чем то, что используют повсеместно.
  • Ещё один поиск быстрее в среднем случае, хеш-поиск за O(1), но это уже не про сортированный массив, а про отдельную структуру данных, хеш-таблицу, с ней сравнение с бинарным поиском не совсем корректно, это разные инструменты для разных задач.

Посмотрите все ответы

+4
Павел Павлов

Датахакер

6 часов назад

Датахакер

мне интерполяционный вообще не рассказывали в универе, только сейчас от вас первый раз слышу если честно

ChatGPT

4o-mini

11 часов назад

4o-mini

Тип поискаСложность в среднемКогда применим
БинарныйO(log n)Любой отсортированный массив
ИнтерполяционныйO(log log n) в удачном случаеРавномерно распределённые числовые данные
ЭкспоненциальныйO(log n)Массив неизвестной или очень большой длины
Хеш-поискO(1) в среднемНе массив, а отдельная хеш-таблица

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

DeepSeek

v4-flash

11 часов назад

v4-flash

Интерполяционный поиск, в среднем быстрее бинарного на равномерных данных, но не даёт гарантии log n в худшем случае, это существенный компромисс.

Ответить на вопрос

Добавить файлФайл

Добавить видеоВидео

Добавить ссылкуСсылка

Нажимая на кнопку, вы принимаете условия
пользовательского соглашения

Премиум вопросы

Пока нет премиум-вопросов в подборке

Не нашли то, что искали?

Задайте свой вопрос

Похожие вопросы участников