2026-rff_mp/pogodinda/lab1/docs/report.md
2026-05-21 20:29:55 +03:00

4.0 KiB
Raw Blame History

Отчёт по лабораторной работе "Структуры данных"

1. Введение

В данной работе были реализованы три структуры данных для хранения телефонного справочника: связный список, хеш-таблица и двоичное дерево поиска. Проведено экспериментальное сравнение производительности операций вставки, поиска и удаления на наборе из 10 000 записей. Для каждой структуры тестирование выполнялось на двух вариантах входных данных: случайный порядок и отсортированный по имени.

2. Результаты измерений

Структура Режим Вставка, с Поиск, с Удаление, с
Связный список случайный 7.50 0.0376 0.1337
Связный список отсортированный 7.12 0.0323 0.0263
Хеш-таблица случайный 0.022 0.0001 0.0001
Хеш-таблица отсортированный 0.024 0.0001 0.0001
Двоичное дерево случайный 0.037 0.0001 0.0196
Двоичное дерево отсортированный RecursionError RecursionError RecursionError

График производительности

3. Анализ результатов

3.1. Влияние порядка данных на BST

При вставке элементов в отсортированном порядке двоичное дерево поиска вырождается в линейный список. Эксперимент подтверждает это: вставка на отсортированных данных вызвала ошибку RecursionError, в то время как на случайных данных заняла 0.037 секунды.

3.2. Устойчивость хеш-таблицы к порядку

Хеш-таблица использует хеш-функцию, которая равномерно распределяет ключи по корзинам независимо от порядка поступления. В случайном и отсортированном режимах время вставки практически одинаково: 0.022 и 0.024 секунды.

3.3. Медлительность связного списка при поиске

Связный список не обеспечивает прямого доступа к элементам. Время поиска в списке (0.0376 сек) в 376 раз больше, чем в хеш-таблице (0.0001 сек).

3.4. Сравнение удаления

  • Связный список: 0.1337 сек (требует линейного поиска)
  • Хеш-таблица: 0.0001 сек (мгновенно)
  • BST на случайных данных: 0.0196 сек

4. Вывод

Хеш-таблица оптимальный выбор, если требуется максимальная скорость поиска, вставки и удаления. В эксперименте показала стабильно высокую производительность во всех режимах.

Двоичное дерево поиска следует применять, когда необходимо получать данные в отсортированном порядке.

Связный список практически непригоден для больших объёмов данных из-за линейной сложности.

Для телефонного справочника рекомендуется использовать хеш-таблицу.