# ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ ## Тема: Сравнительный анализ структур данных для телефонной книги ### Цель работы Реализовать и сравнить производительность трех структур данных: бинарного дерева поиска, хеш-таблицы и связного списка. ### Ход работы #### 1. Реализованы структуры данных - **Binary Search Tree (BST)** - бинарное дерево поиска - **Hash Table** - хеш-таблица с методом цепочек - **Linked List** - односвязный список #### 2. Проведены эксперименты Каждый эксперимент повторен 5 раз, результаты сохранены в файл `results.csv` **Эксперимент 1:** Вставка элементов (случайные данные) **Эксперимент 2:** Вставка элементов (отсортированные данные) **Эксперимент 3:** Поиск 100 элементов ### Результаты измерений (средние значения) | Размер | BST случайный | BST отсортированный | Хеш-таблица | Связный список | |--------|---------------|--------------------|-------------|----------------| | 100 | 0.0001 сек | 0.0004 сек | 0.0002 сек | 0.0005 сек | | 200 | 0.0002 сек | 0.0023 сек | 0.0006 сек | 0.0020 сек | | 500 | 0.0007 сек | 0.0259 сек | 0.0100 сек | 0.0123 сек | | 1000 | 0.0034 сек | 0.0910 сек | 0.0250 сек | 0.0340 сек | | 2000 | 0.0075 сек | 0.3500 сек | 0.0580 сек | 0.0820 сек | **Поиск 100 элементов (2000 записей):** - BST: 0.0012 сек - Хеш-таблица: 0.00055 сек - Связный список: 0.0032 сек ### Графики *(вставьте сюда graphics.png)* **График 1:** Сравнение скорости вставки **График 2:** Деградация BST на отсортированных данных **График 3:** Сравнение скорости поиска **График 4:** Во сколько раз BST медленнее на отсортированных данных ### Анализ результатов **1. Влияние порядка данных на BST** При вставке отсортированных данных BST вырождается в связный список. На 2000 записях замедление составило 46.7 раз. Сложность падает с O(log n) до O(n). **2. Хеш-таблица и порядок данных** Хеш-таблица не чувствительна к порядку, так как хеш-функция вычисляет позицию напрямую, без сравнения с другими элементами. **3. Связный список при поиске** Всегда медленен при поиске, так как требует последовательного перебора O(n) до нахождения элемента. **4. Удаление элементов** - **BST:** требует поиска узла и перестроения поддеревьев (сложный случай с двумя детьми) - **Хеш-таблица:** помечает элемент как deleted, при переполнении делает рехеширование - **Связный список:** перелинковывает указатели предыдущего и следующего узлов ### Вывод **Рекомендации по выбору структуры данных:** | Задача | Рекомендуемая структура | Причина | |--------|------------------------|---------| | Частый поиск | Хеш-таблица | O(1) в среднем | | Частые вставки | Хеш-таблица | O(1) в среднем | | Нужна сортировка | BST | автоматическая сортировка | | Мало данных (<100) | Связный список | простая реализация | | Максимальная скорость | Хеш-таблица | лучшая производительность | **Итог:** Для телефонной книги с большим количеством записей и частым поиском оптимальна **хеш-таблица**. Если требуется выводить контакты в алфавитном порядке - **BST**. Связный список подходит только для учебных целей или очень малых объемов данных.