Загрузить файлы в «SmirnovaVYu/docs»

This commit is contained in:
smirnovavyu 2026-09-04 14:55:50 +00:00
parent 3b3ab992d5
commit 5dfc22f2f3
3 changed files with 89 additions and 0 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View File

@ -0,0 +1,89 @@
# Отчёт по лабораторной работе
## Цель работы
Реализовать три структуры данных «с нуля» (связный список, хеш-таблица, двоичное дерево поиска), применить их для хранения записей телефонного справочника и экспериментально сравнить производительность основных операций.
## Параметры эксперимента
- Количество записей: 10000
- Количество повторов каждого теста: 5
- Размер хеш-таблицы: 1000 корзин
## Результаты экспериментов
### 1. Связный список
| Режим | Вставка (сек) | Поиск (сек) | Удаление (сек) |
|-------|---------------|-------------|----------------|
| Случайный | 3.0333 | 0.0231 | 0.0157 |
| Отсортированный | 2.8224 | 0.0027 | 0.0003 |
### 2. Хеш-таблица
| Режим | Вставка (сек) | Поиск (сек) | Удаление (сек) |
|-------|---------------|-------------|----------------|
| Случайный | 0.1966 | 0.0007 | 0.0004 |
| Отсортированный | 0.1950 | 0.0001 | 0.0001 |
### 3. Двоичное дерево поиска (BST)
| Режим | Вставка (сек) | Поиск (сек) | Удаление (сек) |
|-------|---------------|-------------|----------------|
| Случайный | 0.0116 | 0.0001 | 0.0001 |
| Отсортированный | 3.0238 | 0.0003 | 0.0004 |
## Анализ результатов
### 1. Влияние порядка данных на BST
На отсортированных данных BST деградирует с O(log n) до O(n).
Время вставки увеличилось с 0.0116 до 3.0238 секунд — в 259.6 раз.
### 2. Почему хеш-таблица не чувствительна к порядку
Хеш-функция распределяет элементы случайно, порядок ввода не влияет на позицию элемента.
Разница между случайным и отсортированным порядком:
- Вставка: 0.1966 vs 0.1950
- Отношение: 0.99x (почти не чувствительна)
### 3. Почему связный список медленный при поиске
Поиск требует последовательного прохода O(n) без возможности индексации.
Поэтому связный список хорош только когда записей мало.
Для больших телефонных справочников он не подходит.
Сравнение скорости поиска (случайные данные):
- LinkedList: 0.0231 сек
- HashTable: 0.0007 сек (в 30.9 раз быстрее)
- BST: 0.0001 сек
### 4. Сравнение удаления
| Структура | Сложность | Время на 50 удалений (случайные данные) |
|-----------|-----------|------------------------------------------|
| Связный список | O(n) | 0.0157 сек |
| Хеш-таблица | O(1) в среднем | 0.0004 сек |
| BST | O(log n) в среднем | 0.0001 сек |
## Вывод:
| Задача | Рекомендация | Почему |
|--------|-------------|--------|
| Частый поиск | Хеш-таблица | O(1) в среднем, не зависит от порядка |
| Частые вставки/удаления | Хеш-таблица | Амортизированное O(1) |
| Нужен отсортированный вывод | Сбалансированное дерево (AVL/Red-Black) | In-order обход даёт сортировку |
| Мало данных (<100 элементов) | Связный список или массив | Простота, накладные расходы не оправданы |
| Последовательный доступ (очередь/стек) | Связный список | Вставка/удаление в начало/конец за O(1) |
## Заключение
Эксперимент наглядно демонстрирует:
1. **BST без балансировки опасен** — на отсортированных данных он деградирует до O(n)
2. **Хеш-таблица стабильна** — её производительность не зависит от порядка входных данных
3. **Связный список** подходит только для специфических задач с малым объёмом данных
## Дата выполнения
2026-05-21 14:44:41