SmirnovaVYu #380

Merged
git_admin merged 58 commits from smirnovavyu/2026-rff_mp:SmirnovaVYu into develop 2026-09-05 07:04:17 +00:00
4 changed files with 108 additions and 0 deletions
Showing only changes of commit 27cdfbe729 - Show all commits

BIN
SmirnovaVYu/otchet.docx Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

89
SmirnovaVYu/report.md Normal file
View File

@ -0,0 +1,89 @@
# Отчёт по лабораторной работе
## Цель работы
Реализовать три структуры данных «с нуля» (связный список, хеш-таблица, двоичное дерево поиска), применить их для хранения записей телефонного справочника и экспериментально сравнить производительность основных операций.
## Параметры эксперимента
- Количество записей: 10000
- Количество повторов каждого теста: 5
- Размер хеш-таблицы: 1000 корзин
## Результаты экспериментов
### 1. Связный список
| Режим | Вставка (сек) | Поиск (сек) | Удаление (сек) |
|-------|---------------|-------------|----------------|
| Случайный | 3.0333 | 0.0231 | 0.0157 |
| Отсортированный | 2.8224 | 0.0027 | 0.0003 |
### 2. Хеш-таблица
| Режим | Вставка (сек) | Поиск (сек) | Удаление (сек) |
|-------|---------------|-------------|----------------|
| Случайный | 0.1966 | 0.0007 | 0.0004 |
| Отсортированный | 0.1950 | 0.0001 | 0.0001 |
### 3. Двоичное дерево поиска (BST)
| Режим | Вставка (сек) | Поиск (сек) | Удаление (сек) |
|-------|---------------|-------------|----------------|
| Случайный | 0.0116 | 0.0001 | 0.0001 |
| Отсортированный | 3.0238 | 0.0003 | 0.0004 |
## Анализ результатов
### 1. Влияние порядка данных на BST
На отсортированных данных BST деградирует с O(log n) до O(n).
Время вставки увеличилось с 0.0116 до 3.0238 секунд — в 259.6 раз.
### 2. Почему хеш-таблица не чувствительна к порядку
Хеш-функция распределяет элементы случайно, порядок ввода не влияет на позицию элемента.
Разница между случайным и отсортированным порядком:
- Вставка: 0.1966 vs 0.1950
- Отношение: 0.99x (почти не чувствительна)
### 3. Почему связный список медленный при поиске
Поиск требует последовательного прохода O(n) без возможности индексации.
Поэтому связный список хорош только когда записей мало.
Для больших телефонных справочников он не подходит.
Сравнение скорости поиска (случайные данные):
- LinkedList: 0.0231 сек
- HashTable: 0.0007 сек (в 30.9 раз быстрее)
- BST: 0.0001 сек
### 4. Сравнение удаления
| Структура | Сложность | Время на 50 удалений (случайные данные) |
|-----------|-----------|------------------------------------------|
| Связный список | O(n) | 0.0157 сек |
| Хеш-таблица | O(1) в среднем | 0.0004 сек |
| BST | O(log n) в среднем | 0.0001 сек |
## Вывод:
| Задача | Рекомендация | Почему |
|--------|-------------|--------|
| Частый поиск | Хеш-таблица | O(1) в среднем, не зависит от порядка |
| Частые вставки/удаления | Хеш-таблица | Амортизированное O(1) |
| Нужен отсортированный вывод | Сбалансированное дерево (AVL/Red-Black) | In-order обход даёт сортировку |
| Мало данных (<100 элементов) | Связный список или массив | Простота, накладные расходы не оправданы |
| Последовательный доступ (очередь/стек) | Связный список | Вставка/удаление в начало/конец за O(1) |
## Заключение
Эксперимент наглядно демонстрирует:
1. **BST без балансировки опасен** — на отсортированных данных он деградирует до O(n)
2. **Хеш-таблица стабильна** — её производительность не зависит от порядка входных данных
3. **Связный список** подходит только для специфических задач с малым объёмом данных
## Дата выполнения
2026-05-21 14:44:41

19
SmirnovaVYu/results.csv Normal file
View File

@ -0,0 +1,19 @@
Структура,Режим,Операция,Повтор1,Повтор2,Повтор3,Повтор4,Повтор5,Среднее,Стд_откл
linkedlist,случайный,вставка,3.030525333015248,3.011153083993122,3.067337290965952,3.026814332988579,3.0305452499887906,3.0332750581903385,0.018473609585193725
linkedlist,случайный,поиск,0.023072624986525625,0.023000167042482644,0.023063208034727722,0.023132542031817138,0.023077582998666912,0.02306922501884401,4.2179776992719985e-05
linkedlist,случайный,удаление,0.01565887499600649,0.01571191701805219,0.01575241598766297,0.015799874963704497,0.015716666996013373,0.015727949992287903,4.674933972158777e-05
linkedlist,отсортированный,вставка,2.7900312499841675,2.842725833004806,2.8324795000371523,2.8226387499598786,2.824206833029166,2.822416433203034,0.01769628256337186
linkedlist,отсортированный,поиск,0.0026340839685872197,0.0026223339955322444,0.002628166985232383,0.0026764170033857226,0.0026917500072158873,0.0026505503919906914,2.805286048400875e-05
linkedlist,отсортированный,удаление,0.00025987502885982394,0.00026162504218518734,0.0002579580177552998,0.00026395899476483464,0.00025770795764401555,0.00026022500824183223,2.3452089690404486e-06
hashtable,случайный,вставка,0.19747637503314763,0.1957802499528043,0.195026625005994,0.1953300409950316,0.1995006250217557,0.19662278320174664,0.001669692081198908
hashtable,случайный,поиск,0.0007510409923270345,0.0007478750194422901,0.0007428750395774841,0.0007420409820042551,0.0007448329706676304,0.0007457330008037389,3.327822630240364e-06
hashtable,случайный,удаление,0.00037333305226638913,0.0003679579822346568,0.0003666249685920775,0.000368500011973083,0.00036679196637123823,0.00036864159628748896,2.448879400144638e-06
hashtable,отсортированный,вставка,0.19373183301649988,0.19131775002460927,0.20354575000237674,0.19244924996746704,0.19410508294822648,0.19502993319183587,0.004370349591521971
hashtable,отсортированный,поиск,7.366598583757877e-05,7.358303992077708e-05,7.379200542345643e-05,7.329200161620975e-05,7.29589955881238e-05,7.345840567722917e-05,2.9900259428386626e-07
hashtable,отсортированный,удаление,5.0292001105844975e-05,5.037500523030758e-05,5.124998278915882e-05,5.0540955271571875e-05,5.050003528594971e-05,5.059159593656659e-05,3.409075164884719e-07
bst,случайный,вставка,0.012036708008963615,0.011527249997016042,0.011410709004849195,0.011799749976489693,0.011473792023025453,0.011649641802068799,0.00023466763426973204
bst,случайный,поиск,6.741698598489165e-05,8.07500327937305e-05,6.450002547353506e-05,6.416701944544911e-05,6.570800906047225e-05,6.850841455161572e-05,6.225842896923898e-06
bst,случайный,удаление,5.729199619963765e-05,5.966599564999342e-05,5.4165953770279884e-05,5.4958974942564964e-05,5.529198097065091e-05,5.627498030662537e-05,1.9839081193124104e-06
bst,отсортированный,вставка,3.063095625024289,3.0107702090172097,3.0406965000438504,2.9900419160258025,3.014387540984899,3.02379835821921,0.025407148276338564
bst,отсортированный,поиск,0.0002975420211441815,0.0002921670093201101,0.00029941595857962966,0.0002905830042436719,0.00029925000853836536,0.0002957916003651917,3.6993963362568915e-06
bst,отсортированный,удаление,0.0003683330141939223,0.00036570901283994317,0.00037129101110622287,0.0003595000016503036,0.0003665830008685589,0.00036628320813179014,3.891304706952938e-06
1 Структура Режим Операция Повтор1 Повтор2 Повтор3 Повтор4 Повтор5 Среднее Стд_откл
2 linkedlist случайный вставка 3.030525333015248 3.011153083993122 3.067337290965952 3.026814332988579 3.0305452499887906 3.0332750581903385 0.018473609585193725
3 linkedlist случайный поиск 0.023072624986525625 0.023000167042482644 0.023063208034727722 0.023132542031817138 0.023077582998666912 0.02306922501884401 4.2179776992719985e-05
4 linkedlist случайный удаление 0.01565887499600649 0.01571191701805219 0.01575241598766297 0.015799874963704497 0.015716666996013373 0.015727949992287903 4.674933972158777e-05
5 linkedlist отсортированный вставка 2.7900312499841675 2.842725833004806 2.8324795000371523 2.8226387499598786 2.824206833029166 2.822416433203034 0.01769628256337186
6 linkedlist отсортированный поиск 0.0026340839685872197 0.0026223339955322444 0.002628166985232383 0.0026764170033857226 0.0026917500072158873 0.0026505503919906914 2.805286048400875e-05
7 linkedlist отсортированный удаление 0.00025987502885982394 0.00026162504218518734 0.0002579580177552998 0.00026395899476483464 0.00025770795764401555 0.00026022500824183223 2.3452089690404486e-06
8 hashtable случайный вставка 0.19747637503314763 0.1957802499528043 0.195026625005994 0.1953300409950316 0.1995006250217557 0.19662278320174664 0.001669692081198908
9 hashtable случайный поиск 0.0007510409923270345 0.0007478750194422901 0.0007428750395774841 0.0007420409820042551 0.0007448329706676304 0.0007457330008037389 3.327822630240364e-06
10 hashtable случайный удаление 0.00037333305226638913 0.0003679579822346568 0.0003666249685920775 0.000368500011973083 0.00036679196637123823 0.00036864159628748896 2.448879400144638e-06
11 hashtable отсортированный вставка 0.19373183301649988 0.19131775002460927 0.20354575000237674 0.19244924996746704 0.19410508294822648 0.19502993319183587 0.004370349591521971
12 hashtable отсортированный поиск 7.366598583757877e-05 7.358303992077708e-05 7.379200542345643e-05 7.329200161620975e-05 7.29589955881238e-05 7.345840567722917e-05 2.9900259428386626e-07
13 hashtable отсортированный удаление 5.0292001105844975e-05 5.037500523030758e-05 5.124998278915882e-05 5.0540955271571875e-05 5.050003528594971e-05 5.059159593656659e-05 3.409075164884719e-07
14 bst случайный вставка 0.012036708008963615 0.011527249997016042 0.011410709004849195 0.011799749976489693 0.011473792023025453 0.011649641802068799 0.00023466763426973204
15 bst случайный поиск 6.741698598489165e-05 8.07500327937305e-05 6.450002547353506e-05 6.416701944544911e-05 6.570800906047225e-05 6.850841455161572e-05 6.225842896923898e-06
16 bst случайный удаление 5.729199619963765e-05 5.966599564999342e-05 5.4165953770279884e-05 5.4958974942564964e-05 5.529198097065091e-05 5.627498030662537e-05 1.9839081193124104e-06
17 bst отсортированный вставка 3.063095625024289 3.0107702090172097 3.0406965000438504 2.9900419160258025 3.014387540984899 3.02379835821921 0.025407148276338564
18 bst отсортированный поиск 0.0002975420211441815 0.0002921670093201101 0.00029941595857962966 0.0002905830042436719 0.00029925000853836536 0.0002957916003651917 3.6993963362568915e-06
19 bst отсортированный удаление 0.0003683330141939223 0.00036570901283994317 0.00037129101110622287 0.0003595000016503036 0.0003665830008685589 0.00036628320813179014 3.891304706952938e-06