# Отчёт по лабораторной работе "Структуры данных" ## 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 | ![График производительности](data/graph.png) ## 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. Вывод **Хеш-таблица** – оптимальный выбор, если требуется максимальная скорость поиска, вставки и удаления. В эксперименте показала стабильно высокую производительность во всех режимах. **Двоичное дерево поиска** – следует применять, когда необходимо получать данные в отсортированном порядке. **Связный список** – практически непригоден для больших объёмов данных из-за линейной сложности. Для телефонного справочника рекомендуется использовать хеш-таблицу.