
- •Аннотация
- •Введение
- •Теоретическая часть линейный поиск
- •Описание алгоритма
- •Бинарный поиск
- •Функция временной сложности и её асимптотическая оценка
- •Функция пространственной сложности и её асимптотическая оценка
- •График функции временной сложности для всех случаев
- •Интерполяционный поиск
- •Описание алгоритма
- •Функция временной сложности и её асимптотическая оценка
- •Функция пространственной сложности и её асимптотическая оценка
- •График функции временной сложности для всех случаев
- •Экспоненциальный поиск
- •Описание алгоритма
- •Функция временной сложности и её асимптотическая оценка
- •Функция пространственной сложности и её асимптотическая оценка
- •График функции временной сложности для всех случаев фибоначчиев поиск (Fibonacci Search)
- •Описание алгоритма
- •Функция временной сложности и её асимптотическая оценка
- •Функция пространственной сложности и её асимптотическая оценка
- •График функции временной сложности для всех случаев
- •Сравнение временной сложности всех алгоритмов
- •Практическая часть линейный поиск
- •Бинарный поиск
- •Интерполяционный поиск
- •Экспоненциальный поиск
- •Фибоначчиев поиск
- •Сравнение временной сложности экспериментальных значений.
- •Сравнение теоретических и экспериментальных значений
- •Заключение
- •Код программы
- •Линейный поиск
- •Бинарный поиск
- •Интерполяционный поиск
- •Экспоненциальный поиск
- •Фибоначчиев поиск
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра САПР
КУРСОВАЯ РАБОТА
по дисциплине «Алгоритмы и структуры данных»
Тема: Сравнение различных алгоритмов поиска в массиве
Студентка гр. 3352 |
|
|
Преподаватель |
|
|
Санкт-Петербург
2024
ЗАДАНИЕ
на курсовую работу
Студентка Гареева К. Р. |
||
Группа 3352 |
||
Тема работы: «Сравнение различных алгоритмов поиска в массиве»
|
||
Исходные данные: Требуется реализовать пять алгоритмов поиска в массиве, получить зависимость времени от величины массива и сравнить алгоритмы между собой. |
||
Содержание пояснительной записки: «Содержание», «Введение», «Теоретическая часть», «Практическая часть», «Заключение» |
||
Предполагаемый объем пояснительной записки: Не менее 30 страниц. |
||
Дата выдачи задания: 19.11.2024 |
||
Дата сдачи реферата: 17.12.2024 |
||
Дата защиты реферата: 19.12.2024 |
||
Студенка |
|
Гареева К.Р. |
Преподаватель |
|
Пестерев Д.О. |
Аннотация
В данной курсовой работе проводится анализ и сравнение различных алгоритмов поиска в массиве: линейного поиска, бинарного поиска, интерполяционного поиска, экспоненциального поиска и Фибоначчиева поиска. Рассматриваются функции временной и пространственной сложности для каждого из алгоритмов в лучших, средних и худших случаях. Теоретические зависимости представлены в виде графиков и сопоставляются с экспериментальными результатами, полученными на основе проведения серии вычислительных экспериментов. Основной целью работы является выявление наиболее эффективного метода поиска на основе анализа теоретических и практических данных, а также обоснование различий между ними. Результаты исследования представлены в виде сравнительных графиков и выводов о производительности алгоритмов поиска.
Summary
This term paper analyzes and compares various array search algorithms: linear search, binary search, interpolation search, exponential search, and Fibonacci search. The functions of time and space complexity for each algorithm are considered in the best, average, and worst cases. Theoretical dependencies are presented in the form of graphs and compared with experimental results obtained through a series of computational experiments. The main goal of the work is to identify the most effective search method based on the analysis of theoretical and practical data, as well as to substantiate the differences between them. The results of the study are presented in the form of comparative graphs and conclusions about the performance of search algorithms.
Оглавление
ВВЕДЕНИЕ 5
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 7
ЛИНЕЙНЫЙ ПОИСК 7
БИНАРНЫЙ ПОИСК 8
ИНТЕРПОЛЯЦИОННЫЙ ПОИСК 12
ЭКСПОНЕНЦИАЛЬНЫЙ ПОИСК 16
ФИБОНАЧЧИЕВ ПОИСК (Fibonacci Search) 18
Сравнение временной сложности всех алгоритмов 22
ПРАКТИЧЕСКАЯ ЧАСТЬ 23
ЛИНЕЙНЫЙ ПОИСК 23
БИНАРНЫЙ ПОИСК 26
ИНТЕРПОЛЯЦИОННЫЙ ПОИСК 29
ЭКСПОНЕНЦИАЛЬНЫЙ ПОИСК 31
ФИБОНАЧЧИЕВ ПОИСК 33
Сравнение временной сложности экспериментальных значений. 35
Сравнение теоретических и экспериментальных значений 36
ЗАКЛЮЧЕНИЕ 37
КОД ПРОГРАММЫ 38
Ссылка на гугл коллаб 38
https://colab.research.google.com/drive/1KTzQ7YchiMELhkIwHI4kg4tAl3D9L0WM?usp=sharing 38
Введение
Поиск данных в массиве является одной из ключевых задач информатики и алгоритмизации. Эффективность поиска напрямую влияет на производительность программных систем, где требуется обработка больших объемов информации. Различные алгоритмы поиска обладают разной степенью сложности и производительности, что делает их анализ актуальным для выбора оптимального метода в конкретных задачах.
В данной работе рассматриваются следующие алгоритмы поиска в массиве:
Линейный поиск (Linear Search) — простой метод последовательного перебора элементов массива.
Бинарный поиск (Binary Search) — эффективный алгоритм поиска, работающий на отсортированных массивах методом деления пополам.
Интерполяционный поиск (Interpolation Search) — усовершенствованный метод, который оценивает позицию элемента на основе линейной интерполяции.
Экспоненциальный поиск (Exponential Search) — метод, сочетающий экспоненциальное увеличение границы поиска с бинарным поиском.
Фибоначчиев поиск (Fibonacci Search) — метод, основанный на делении массива с использованием чисел Фибоначчи.
Цель работы: Исследование и сравнение различных алгоритмов поиска.
Задачи:
Обзор следующих методов:
Линейный поиск (Linear Search).
Бинарный поиск (Binary Search).
Интерполяционный поиск (Interpolation Search).
Экспоненциальный поиск (Exponential Search).
Фибоначчиев поиск (Fibonacci Search).
Для этих типов поиска:
Функцию временной сложности (все случаи)
Функция пространственной сложности
График теоретический
Получить зависимость экспериментально, показать на графике
Сравнить графики
В теории сравнить все графики и предположить, какой метод поиска самый быстрый
Сравнить экспериментальные значения с теоретическими