2026-rff_mp/pogodinda/lab1/docs/report.md

5.2 KiB
Raw Blame History

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

1. Введение

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

Для каждой структуры тестирование выполнялось на двух вариантах входных данных: случайный порядок и отсортированный по имени. Каждый эксперимент повторялся 5 раз, в таблице приведены средние значения.

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

Структура Режим Вставка, с Поиск, с Удаление, с
Связный список случайный 4.84 0.0544 0.0308
Связный список отсортированный 4.60 0.0446 0.0199
Хеш-таблица случайный 0.0218 0.000196 0.000096
Хеш-таблица отсортированный 0.0204 0.000212 0.000098
Двоичное дерево случайный 0.0507 0.000280 0.000175
Двоичное дерево отсортированный 17.99 0.1583 0.0720

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

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

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

При вставке элементов в отсортированном порядке двоичное дерево поиска вырождается в линейный список. Эксперимент подтверждает это: вставка на отсортированных данных заняла 17.99 секунды, что в 355 раз медленнее, чем на случайных данных (0.0507 секунды). Поиск и удаление также замедлились примерно в 500 раз.

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

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

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

Связный список не обеспечивает прямого доступа к элементам. Вставка 10000 записей заняла 4.84 секунды в случайном режиме. Время поиска в списке (0.0544 сек) в 278 раз больше, чем в хеш-таблице (0.000196 сек). Удаление также значительно медленнее.

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

  • Связный список: 0.0308 сек (случайный) — требуется линейный поиск
  • Хеш-таблица: 0.000096 сек — практически мгновенно
  • BST на случайных данных: 0.000175 сек — очень быстро
  • BST на отсортированных данных: 0.0720 сек — в 400 раз медленнее, чем на случайных

4. Выводы

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

Двоичное дерево поиска эффективно на случайных данных, но критически деградирует на отсортированных. При необходимости работы с отсортированными данными следует использовать сбалансированные деревья (AVL, красно-чёрные).

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

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