2026-rff_mp/starikovta/docs/report_task1.md

42 lines
2.2 KiB
Markdown
Raw Normal View History

2026-09-05 14:16:35 +00:00
# Отчёт по Заданию 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))