4.9 KiB
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ
Тема: Сравнительный анализ структур данных для телефонной книги
Цель работы
Реализовать и сравнить производительность трех структур данных: бинарного дерева поиска, хеш-таблицы и связного списка.
Ход работы
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. Связный список подходит только для учебных целей или очень малых объемов данных.