Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсач по алгоритмам поиска - 3 сем АИСД.docx
Скачиваний:
0
Добавлен:
08.07.2025
Размер:
1.09 Mб
Скачать
  1. Функция пространственной сложности и её асимптотическая оценка

В итеративной версии бинарного поиска:

- Не требуется выделение дополнительной памяти для рекурсии.

- Используются только несколько переменных, в данном случае, указатели на границы массива.

  1. График функции временной сложности для всех случаев

Интерполяционный поиск

(Interpolation Search)

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

  1. Описание алгоритма

Используемая формула для вычисления предполагаемого индекса:

и - индексы текущего диапазона поиска.

и - значения элементов в начале и конце диапазона.

- искомое значение.

Алгоритм использует метод интерполяции для предсказания индекса.

Пример:

Искомое значение: 42

Массив (отсортированный):

Формула для нахождения индекса:

Так как ,

Проверяем по формуле:

Число найдено

  1. Функция временной сложности и её асимптотическая оценка

Лучший случай

Лучший случай наступает, если искомый элемент оказывается на предполагаемой позиции на первой итерации. Это возможно, если позиция искомого элемента равна середине массива.

Средний случай

В среднем случае интерполяционный поиск работает быстрее, чем бинарный поиск, если массив распределён равномерно.

За один шаг алгоритм уменьшает количество проверяемых элементов с n до где m зависит от степени равномерности массива. То есть, после k-ого шага количество проверяемых элементов уменьшается до . Завершение поиска: интервал становится длины 1,

m - параметр, который определяет, насколько быстро уменьшается длина интервала на каждом шаге и зависит от степени равномерности распределения данных.

Худший случай

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

В этом случае:

  1. Функция пространственной сложности и её асимптотическая оценка

Интерполяционный поиск выполняется итеративно и не требует дополнительной памяти для хранения промежуточных структур данных или рекурсивных вызовов.

Что хранится в памяти:

  1. Начальный и конечный индексы для текущего подмассива.

  2. Позиция вычисленного индекса поиска ( ).

  3. Дополнительные константные переменные для выполнения операций (например, ключ поиска и размер массива).

Таким образом, пространственная сложность интерполяционного поиска составляет:

  1. График функции временной сложности для всех случаев

Экспоненциальный поиск

(Exponential Search)

Экспоненциальный поиск — это алгоритм поиска в отсортированном массиве. Он используется для быстрого определения диапазона, где может находиться искомый элемент. После определения диапазона выполняется бинарный поиск внутри этого диапазона.

Алгоритм начинается с поиска индекса, который экспоненциально увеличивается (1, 2, 4, 8, ...), пока не будет найден подходящий диапазон, содержащий искомый элемент.