2026-rff_mp/lukovnikovde/docs/report.md
2026-05-07 13:56:15 +00:00

28 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Отчет по лабораторной работе "Структуры данных"
## 1. Введение
В ходе выполнения лабораторной работы были выполнены реализации трех структур для хранения и обработки данных телефонных номеров:
- Связный список
- Хеш-таблица
- Двоичное дерево поиска.
Практическая часть включала в себя такие операции как: добавление или обновление телефонного номера, удаление телефонного номера, поиск владельца телефонного номера и составление списка из кортежей вида (владелец, номер). Каждое выполнение функций проводилось с списоком из кортежей вида (владелецб номер), в котором было 1000 уникальных имен и еще 9000 имен, которые уже были использованны (всего 10000 кортежей). Каждое тестирование структур выполнялось для сортированного и не сортированного начального списка 10 раз.
## 2. Результаты измерений
Данные в таблице отражают среднее время в милисекундах выполнения структур.
| Структура | Начальный список | insert, мс | find, мс | delete, мс | create list, мс |
| :---: | :---: | ---: | ---: | ---: | ---: |
| LinkedList | not sorted | 165.61 | 1.767 | 3.418 | 31.795 |
| LinkedList | sorted | 171.01 | 1.720 | 3.440 | 21.378 |
| HashTable | not sorted | 17.15 | 0.278 | 0.320 | 48.080 |
| HashTable | sorted | 17.49 | 0.284 | 0.321 | 47.911 |
| BST | not sorted | 52.95 | 0.772 | 0.660 | 0.283 |
| BST | sorted | 162.70 | 1.809 | 1.564 | 1.626 |
Изходя из полученных значений можно построить столбчатую диаграмму:
![](data/time_schedule.png)
## 3. Анализ полученных данных
### 3.1 Зависимость скорости работы BST от порядка ввода данных.
Из полученных данных можно заметить, что для BST порядок ввода сильно сказывается на результате скорости выполнения программы: при послутплении неотсортированных данных программа справляется примерно в 3 раза быстрее. Связано это с тем, что каждое новое значение, при сортированных данных, будет больше предыдущего, а соответственно будет каждый раз создаватся правый лист, из-за чего высота дерева становится равной количесвту всех уникальных имен, вседствии чего сложность возрастает до О(n), а двоичное дерево превращается в своебразный связный список. Даже если сравнивать связный список и такое дерево, то скорость запонения с помощью такого способа проигрывает даже связному списку. Связано это с тем, что, хоть дерево здесь и будет выполнять роль связного списка, оно всеравно будет в каждом узле создавать новый левый лист со значением None, что замедляет его работу.
### 3.2 Независимость скорости выполнения заполнения хеш-таблицы от порядка вводных данных
Из эксперемента можно заметить, что скорость заполнения хеш-таблицы сортированными и несортированными данными почти одинакова(разница менее 2%). Это объясняется наличием бакетов, которые распределяют данные.