4.6 KiB
Отчёт по лабораторной работе
Цель работы
Реализовать три структуры данных «с нуля» (связный список, хеш-таблица, двоичное дерево поиска), применить их для хранения записей телефонного справочника и экспериментально сравнить производительность основных операций.
Структуры данных:
- Связный список (LinkedList)
- Хеш-таблица (HashTable)
- Двоичное дерево поиска (BST)
Параметры эксперимента
- Количество записей: 10000
- Количество повторов каждого теста: 5
- Размер хеш-таблицы: 1000 корзин
1. Связный список
| Режим | Вставка (сек) | Поиск (сек) | Удаление (сек) |
|---|---|---|---|
| Случайный | 7.027 | 0.062 | 0.02 |
| Отсортированный | 6.93 | 0.065 | 0.02 |
2. Хеш-таблица
| Режим | Вставка (сек) | Поиск (сек) | Удаление (сек) |
|---|---|---|---|
| Случайный | 0.033 | 0.0003 | 0.0001 |
| Отсортированный | 0.065 | 0.0003 | 0.0001 |
3. Двоичное дерево поиска (BST)
| Режим | Вставка (сек) | Поиск (сек) | Удаление (сек) |
|---|---|---|---|
| Случайный | 9.6316 | 0.0967 | 0.035 |
| Отсортированный | 9.4514 | 0.1112 | 0.0352 |
Анализ результатов
1. Влияние порядка данных на BST
На отсортированных данных BST деградирует с O(log n) до O(n).
Время вставки увеличилось с {bst_random_insert:.4f} до {bst_sorted_insert:.4f} секунд — в {bst_sorted_insert/bst_random_insert:.1f} раз.
2. Почему хеш-таблица не чувствительна к порядку
Хеш-функция распределяет элементы случайно, порядок ввода не влияет на позицию элемента.
Разница между случайным и отсортированным порядком:
-
Вставка: {ht_random_insert:.4f} vs {ht_sorted_insert:.4f}
-
Отношение: {ht_sorted_insert/ht_random_insert:.2f}x (почти не чувствительна)
3. Почему связный список медленный при поиске
Поиск требует последовательного прохода O(n) без возможности индексации.
Поэтому связный список хорош только когда записей мало.
Для больших телефонных справочников он не подходит. Выбор структуры данных должен основываться на требованиях конкретной задачи: