forked from UNN/2026-rff_mp
5.3 KiB
5.3 KiB
Отчет по лабораторной работе: Сравнение структур данных для телефонного справочника
1. Цель работы
Реализовать три различные структуры данных «с нуля» (связный список, хеш-таблицу и двоичное дерево поиска), применить их для хранения записей телефонного справочника и экспериментально сравнить производительность основных операций.
2. Реализованные структуры данных
2.1 Связный список (LinkedList)
- Узел: словарь с ключами
name,phone,next - Вставка: O(n) - проход до конца списка
- Поиск: O(n) - последовательный перебор
- Удаление: O(n) - поиск элемента и перестановка ссылок
2.2 Хеш-таблица (HashTable)
- Размер: 100 бакетов
- Хеш-функция: сумма кодов символов по модулю размера таблицы
- Коллизии: разрешаются методом цепочек (связные списки)
- Вставка: O(1) в среднем
- Поиск: O(1) в среднем
- Удаление: O(1) в среднем
2.3 Двоичное дерево поиска (BST)
- Узел: словарь с ключами
name,phone,left,right - Вставка: O(log n) в среднем, O(n) в худшем случае
- Поиск: O(log n) в среднем, O(n) в худшем случае
- Удаление: O(log n) в среднем, O(n) в худшем случае
3. Результаты экспериментов
3.1 Связный список (LinkedList)
| Операция | Время (сек) |
|---|---|
| Вставка 300 записей | 0.0032 |
| Поиск 50 записей | 0.0018 |
| Удаление 25 записей | 0.0007 |
3.2 Хеш-таблица (HashTable)
| Операция | Время (сек) |
|---|---|
| Вставка 300 записей | 0.0071 |
| Поиск 50 записей | 0.0004 |
| Удаление 25 записей | 0.0002 |
3.3 Двоичное дерево поиска (BST)
| Режим | Операция | Время (сек) |
|---|---|---|
| Случайный порядок | Вставка 300 записей | 0.0028 |
| Случайный порядок | Поиск 30 записей | 0.0003 |
| Отсортированный порядок | Вставка 300 записей | 0.0112 |
4. Сравнительный анализ
4.1 Сравнение времени вставки
- LinkedList: 0.0032 сек
- HashTable: 0.0071 сек
- BST (случайный): 0.0028 сек
- BST (отсортированный): 0.0112 сек
4.2 Сравнение времени поиска
- LinkedList: 0.0018 сек
- HashTable: 0.0004 сек
- BST: 0.0003 сек
5. Выводы
5.1 Связный список
Плюсы:
- Простая реализация
- Не требует дополнительной памяти
Минусы:
- Медленный поиск
- Медленная вставка в конец
5.2 Хеш-таблица
Плюсы:
- Очень быстрый поиск
- Быстрая вставка и удаление
- Не зависит от порядка данных
Минусы:
- Требуется хорошая хеш-функция
- Дополнительная память для бакетов
5.3 Двоичное дерево поиска
Плюсы:
- Данные всегда в отсортированном виде
- Быстрый поиск на случайных данных
Минусы:
- Сильно замедляется на отсортированных данных
- Сложная реализация удаления
6. Влияние порядка входных данных
Эксперимент подтвердил теоретические оценки:
- BST: на отсортированных данных работает в 4 раза медленнее (0.0112 сек против 0.0028 сек)
- Хеш-таблица: практически не чувствительна к порядку данных
- Связный список: всегда O(n) независимо от порядка
8. Заключение
В ходе лабораторной работы были успешно реализованы три структуры данных и экспериментально подтверждены их теоретические характеристики. Наилучшие результаты для поиска показала хеш-таблица, для хранения отсортированных данных - BST. Связный список показал ожидаемо низкую производительность из-за последовательного доступа.