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

Определение диапазона: Алгоритм проверяет элементы на индексах ** пока значение элемента не станет больше или равно искомому.

Бинарный поиск: После нахождения диапазона [start,end], где key может находиться, запускается бинарный поиск внутри этого диапазона.

Пример:

Массив:

Искомый элемент: 15

Ищем диапазон, в котором может находиться :

Диапазон: .

Выполняем бинарный поиск в диапазоне :

Середина диапазона . Сдвигаем .

Проверяем . Элемент найден.

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

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

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

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

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

Для бинарного поиска внутри диапазона (размер которого также пропорционален ) потребуется .

Итог

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

В худшем случае элемент:

  1. Находится в конце массива (или отсутствует).

  2. Потребуется операций для определения диапазона и для бинарного поиска.

Итоговая временная сложность:

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

Экспоненциальный поиск состоит из двух этапов:

  1. Экспоненциальное увеличение границы поиска до нахождения диапазона, содержащего ключ.

  2. Бинарный поиск в найденном диапазоне.

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

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

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

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

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

Последовательность Фибоначчи:

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

Нахождение минимального числа в последовательности Фибоначчи, такого что , где — размер массива.

Используем числа Фибоначчи и ​, чтобы определить индексы для проверки.

Сравнение искомого элемента с элементом массива на текущем индексе:

1.Если ключ меньше, область поиска сдвигается влево на элементов.

2.Если ключ больше, область поиска сдвигается вправо на элементов.

3.Если ключ совпадает, поиск завершён.

Повторяем процесс до тех пор, пока область поиска не станет равной 1.

Пример:

Рассмотрим массив , в котором нужно найти элемент

Шаги алгоритма:

Создаем числа Фибоначчи, которые покрывают длину массива.

Размер массива .

Последовательность чисел Фибоначчи:

Число , где , здесь

Инициализация переменных: . Устанавливаем индекс (для отслеживания смещения относительно текущего диапазона).

Первая итерация:

Вычисляем индекс сравнения:

Сравниваем :

Так как , элемент найден.