Отчет по лабораторной работе "Структуры данных"

1)Среднее время выполнения (в секундах)

| Структура | Режим | Вставка (1000) | Поиск (110) | Удаление (50) |
|-----------|-------|----------------|-------------|---------------|
| **LinkedList** | случайный | 0.574278 | 0.027799 | 0.385323 |
| **LinkedList** | отсортированный | 0.389446 | — | — |
| **HashTable** | случайный | 0.036228 | 0.001376 | 0.027784 |
| **HashTable** | отсортированный | 0.041256 | — | — |
| **BST** | случайный | 0.007626 | 0.000781 | 0.008064 |
| **BST** | отсортированный | 0.463135 | — | — |



2)Графическое представление
график в коде

Диаграмма сравнения времени выполнения операций для трёх структур данных



3)Анализ результатов

1. Влияние порядка данных на BST

| Параметр | Случайный порядок | Отсортированный порядок | Изменение |
|----------|-------------------|------------------------|-----------|
| Время вставки | 0.0076 сек | 0.4631 сек | намного медленнее |

Каждый новый элемент добавляется в самый правый узел, и дерево теряет свою сбалансированность. 


2. Устойчивость хеш-таблицы к порядку данных

| Параметр | Случайный порядок | Отсортированный порядок 
|----------|-------------------|------------------------|
| Время вставки | 0.0362 сек | 0.0413 сек | 

 
Хеш-функция `sum(ord(ch)) % size` равномерно распределяет записи. Даже если имена приходят отсортированными, они попадают в разные корзины случайным образом.


3. Медлительность связного списка при поиске

| Операция | LinkedList | HashTable | BST (случайный) |
|----------|------------|-----------|-----------------|
| Поиск (110 записей) | 0.0278 сек | 0.0014 сек | 0.0008 сек |

- Хеш-таблица быстрее связного списка в 20 раз
- BST быстрее связного списка в 35 раз
Поиск в связном списке требует линейного прохода от головы до конца:

· В худшем случае нужно проверить все 1000 элементов
· Нельзя "перепрыгнуть" к нужному элементу



4. Сравнение операций удаления

| Структура | Время удаления (50 записей) | 
|-----------|----------------------------|
| LinkedList | 0.3853 сек 
| HashTable | 0.0278 сек 
| BST (случайный) | 0.0081 сек 

BST и хеш-таблица значительно превосходят связный список по скорости удаления
5)итог
1. Для частого поиска → Хеш-таблица (O(1))
2. Для частых вставок/удалений на случайных данных → BST (O(log n))
3. Для получения данных в отсортированном порядке → BST (in-order обход)
4. Для маленьких объёмов данных → любой, но LinkedList проще
5. Для отсортированных входных данных → НЕ использовать BST (деградация до O(n))