2026-rff_mp/skorohodovsa/task_1/README.md
2026-05-25 11:27:50 +03:00

4.9 KiB
Raw Blame History

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ

Тема: Сравнительный анализ структур данных для телефонной книги

Цель работы

Реализовать и сравнить производительность трех структур данных: бинарного дерева поиска, хеш-таблицы и связного списка.

Ход работы

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. Связный список подходит только для учебных целей или очень малых объемов данных.