# Отчёт по Заданию 1 ## Реализованные структуры 1. Связный список 2. Хеш-таблица (1000 бакетов) 3. Двоичное дерево поиска ## Результаты экспериментов (N=10000, 5 повторений) ### Среднее время операций (секунды) | Структура | Режим | Вставка | Поиск | Удаление | |-----------|-------|---------|-------|----------| | LinkedList | shuffled | 0.4201 | 0.0046 | 0.0035 | | LinkedList | sorted | 0.4510 | 0.0027 | 0.0025 | | HashTable | shuffled | 0.4048 | 0.0037 | 0.0027 | | HashTable | sorted | 0.0419 | 0.0003 | - | | BST | shuffled | 0.0002 | 0.0002 | - | | BST | sorted | 1.4717 | 0.0053 | 0.0024 | ## Анализ ### 1. Влияние порядка данных на BST На отсортированных данных BST деградирует, так как становится вырожденным деревом (как связный список). Время вставки растёт с O(log n) до O(n). ### 2. Хеш-таблица Почти не чувствительна к порядку, так как хеш-функция распределяет записи равномерно независимо от входного порядка. ### 3. Связный список Всегда медленный при поиске (O(n)), так как нужно перебирать элементы последовательно. ### 4. Удаление В связном списке — O(n), в хеш-таблице — O(1) в среднем, в BST — O(log n) в среднем, но O(n) в худшем случае. ## Вывод Какую структуру и для каких задач выбирать: - **Частые вставки**: связный список (O(1) в начало/конец) или хеш-таблица (амортизированно O(1)) - **Частый поиск**: хеш-таблица (O(1) в среднем) - **Необходимость получать данные в порядке**: BST (in-order обход даёт отсортированный список за O(n))