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