2026-rff_mp/chizhikovasM/docs/report_1-st-exersize.md

73 lines
3.8 KiB
Markdown
Raw Permalink Normal View History

Отчет по лабораторной работе "Структуры данных"
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))