From 3fbb3cf061a46d44e4ad719e92950031f2465769 Mon Sep 17 00:00:00 2001 From: GordStep Date: Thu, 14 May 2026 18:47:14 +0300 Subject: [PATCH] =?UTF-8?q?Merge=20stepushovgs=20=D0=B8=20lab1(=D1=82?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=BF=D0=B0=D0=BF=D0=BA=D0=B0?= =?UTF-8?q?=20stepushovgs)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stepushovgs/.gitignore | 262 ++++++ .../data-structures/docs/img/delete.pdf | Bin 0 -> 34082 bytes .../data-structures/docs/img/insert.pdf | Bin 0 -> 34185 bytes .../data-structures/docs/img/search.pdf | Bin 0 -> 33638 bytes .../data-structures/docs/src/main.ipynb | 754 ++++++++++++++++++ stepushovgs/data-structures/docs/Отчёт.md | 122 +++ .../source/bin_search_tree_C/bst.c | 208 +++++ .../source/bin_search_tree_C/bst.h | 37 + .../source/bin_search_tree_C/queue.c | 42 + .../source/bin_search_tree_C/queue.h | 17 + stepushovgs/data-structures/source/go.mod | 3 + .../source/linked_list_c/linked_list.c | 166 ++++ .../source/linked_list_c/linked_list.h | 29 + .../data-structures/source/old_c/main.c | 44 + .../data-structures/source/old_c/main_tree.c | 86 ++ .../data-structures/source/old_c/swap.c | 40 + .../source/pkg/csv_writer/csv_writer.go | 81 ++ .../source/pkg/data_struct/data_structure.go | 25 + .../source/pkg/data_struct/qsort.go | 44 + .../source/pkg/gen_data/data_generator.go | 47 ++ .../bin_search_tree/bin_search_tree.go | 287 +++++++ .../pkg/structures/hash_table/hash_string.go | 15 + .../pkg/structures/hash_table/hash_table.go | 246 ++++++ .../pkg/structures/linked_list/linked_list.go | 169 ++++ .../source/results/benchmarks.csv | 379 +++++++++ .../source/tests/benchmark/main.go | 288 +++++++ .../source/tests/test_bst/main.go | 50 ++ .../source/tests/test_csv_writer/main.go | 19 + .../source/tests/test_ht/main.go | 90 +++ .../source/tests/test_ll/main.go | 52 ++ 30 files changed, 3602 insertions(+) create mode 100644 stepushovgs/.gitignore create mode 100644 stepushovgs/data-structures/docs/img/delete.pdf create mode 100644 stepushovgs/data-structures/docs/img/insert.pdf create mode 100644 stepushovgs/data-structures/docs/img/search.pdf create mode 100644 stepushovgs/data-structures/docs/src/main.ipynb create mode 100644 stepushovgs/data-structures/docs/Отчёт.md create mode 100644 stepushovgs/data-structures/source/bin_search_tree_C/bst.c create mode 100644 stepushovgs/data-structures/source/bin_search_tree_C/bst.h create mode 100644 stepushovgs/data-structures/source/bin_search_tree_C/queue.c create mode 100644 stepushovgs/data-structures/source/bin_search_tree_C/queue.h create mode 100644 stepushovgs/data-structures/source/go.mod create mode 100644 stepushovgs/data-structures/source/linked_list_c/linked_list.c create mode 100644 stepushovgs/data-structures/source/linked_list_c/linked_list.h create mode 100644 stepushovgs/data-structures/source/old_c/main.c create mode 100644 stepushovgs/data-structures/source/old_c/main_tree.c create mode 100644 stepushovgs/data-structures/source/old_c/swap.c create mode 100644 stepushovgs/data-structures/source/pkg/csv_writer/csv_writer.go create mode 100644 stepushovgs/data-structures/source/pkg/data_struct/data_structure.go create mode 100644 stepushovgs/data-structures/source/pkg/data_struct/qsort.go create mode 100644 stepushovgs/data-structures/source/pkg/gen_data/data_generator.go create mode 100644 stepushovgs/data-structures/source/pkg/structures/bin_search_tree/bin_search_tree.go create mode 100644 stepushovgs/data-structures/source/pkg/structures/hash_table/hash_string.go create mode 100644 stepushovgs/data-structures/source/pkg/structures/hash_table/hash_table.go create mode 100644 stepushovgs/data-structures/source/pkg/structures/linked_list/linked_list.go create mode 100644 stepushovgs/data-structures/source/results/benchmarks.csv create mode 100644 stepushovgs/data-structures/source/tests/benchmark/main.go create mode 100644 stepushovgs/data-structures/source/tests/test_bst/main.go create mode 100644 stepushovgs/data-structures/source/tests/test_csv_writer/main.go create mode 100644 stepushovgs/data-structures/source/tests/test_ht/main.go create mode 100644 stepushovgs/data-structures/source/tests/test_ll/main.go diff --git a/stepushovgs/.gitignore b/stepushovgs/.gitignore new file mode 100644 index 0000000..b4f7484 --- /dev/null +++ b/stepushovgs/.gitignore @@ -0,0 +1,262 @@ +# ---> Python +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + +# debug information files +*.dwo + +################################# +############## Go ############### +################################# + +# If you prefer the allow list template instead of the deny list, see community template: +# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore +# +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Code coverage profiles and other test artifacts +*.out +coverage.* +*.coverprofile +profile.cov + +# Dependency directories (remove the comment below to include it) +# vendor/ + +# Go workspace file +go.work +go.work.sum + +# env file +.env + +# Editor/IDE +# .idea/ +.vscode/ + +!go.mod + +################################# +########### Obsidian ############ +################################# + +.obsidian/ \ No newline at end of file diff --git a/stepushovgs/data-structures/docs/img/delete.pdf b/stepushovgs/data-structures/docs/img/delete.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c93434bfcd1dcee1f2bcbe6ff486562fc3d6bdd1 GIT binary patch literal 34082 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 LadJwl$WZ?ui@vM0 literal 0 HcmV?d00001 diff --git a/stepushovgs/data-structures/docs/img/insert.pdf b/stepushovgs/data-structures/docs/img/insert.pdf new file mode 100644 index 0000000000000000000000000000000000000000..638ae8c4c9bdff7490fc1e6c7a9e5bf1ea73d569 GIT binary patch literal 34185 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 LUS2s>dD{O2Z!Fwl literal 0 HcmV?d00001 diff --git a/stepushovgs/data-structures/docs/img/search.pdf b/stepushovgs/data-structures/docs/img/search.pdf new file mode 100644 index 0000000000000000000000000000000000000000..eb2b1b96f213e4f631299e548a4b9857500ca60b GIT binary patch literal 33638 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 literal 0 HcmV?d00001 diff --git a/stepushovgs/data-structures/docs/src/main.ipynb b/stepushovgs/data-structures/docs/src/main.ipynb new file mode 100644 index 0000000..3dfdb4d --- /dev/null +++ b/stepushovgs/data-structures/docs/src/main.ipynb @@ -0,0 +1,754 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 14, + "id": "e631810e", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "12fa3ed1", + "metadata": {}, + "outputs": [], + "source": [ + "# CMU Serif\n", + "plt.rcParams['font.family'] = 'CMU Serif'\n", + "plt.rcParams['mathtext.fontset'] = 'cm'\n", + "plt.rcParams['font.size'] = 14\n", + "plt.rcParams['axes.titlesize'] = 16\n", + "plt.rcParams['axes.labelsize'] = 15\n", + "plt.rcParams['xtick.labelsize'] = 13\n", + "plt.rcParams['ytick.labelsize'] = 13\n", + "plt.rcParams['legend.fontsize'] = 12" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c691c40e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StructureModeOperationTime
0Связный списокСлучайныйВставка0.199516
1Связный списокСлучайныйПоиск0.024629
2Связный списокСлучайныйУдаление0.014065
3Связный списокСлучайныйВставка0.196946
4Связный списокСлучайныйПоиск0.023807
...............
373Бинарное дерево поискаОтсортированныйПоиск0.062731
374Бинарное дерево поискаОтсортированныйУдаление0.062908
375Бинарное дерево поискаОтсортированныйВставка (среднее)0.952690
376Бинарное дерево поискаОтсортированныйПоиск (среднее)0.060593
377Бинарное дерево поискаОтсортированныйУдаление (среднее)0.064886
\n", + "

378 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " Structure Mode Operation Time\n", + "0 Связный список Случайный Вставка 0.199516\n", + "1 Связный список Случайный Поиск 0.024629\n", + "2 Связный список Случайный Удаление 0.014065\n", + "3 Связный список Случайный Вставка 0.196946\n", + "4 Связный список Случайный Поиск 0.023807\n", + ".. ... ... ... ...\n", + "373 Бинарное дерево поиска Отсортированный Поиск 0.062731\n", + "374 Бинарное дерево поиска Отсортированный Удаление 0.062908\n", + "375 Бинарное дерево поиска Отсортированный Вставка (среднее) 0.952690\n", + "376 Бинарное дерево поиска Отсортированный Поиск (среднее) 0.060593\n", + "377 Бинарное дерево поиска Отсортированный Удаление (среднее) 0.064886\n", + "\n", + "[378 rows x 4 columns]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "csv_path = \"../../source/results/benchmarks.csv\"\n", + "\n", + "data = pd.read_csv(csv_path)\n", + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "a3737f45", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(np.float64(0.023733), np.float64(0.193345), np.float64(0.014249))" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Получение данных для Связного списка\n", + "\n", + "ll_random_insert = data.loc[\n", + " (data['Structure'] == 'Связный список') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Вставка'),\n", + " 'Time'\n", + " ].tolist()\n", + "ll_random_insert_average = data.loc[\n", + " (data['Structure'] == 'Связный список') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Вставка (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "ll_random_search = data.loc[\n", + " (data['Structure'] == 'Связный список') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Поиск'),\n", + " 'Time'\n", + " ].tolist()\n", + "ll_random_search_average = data.loc[\n", + " (data['Structure'] == 'Связный список') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Поиск (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "ll_random_delete = data.loc[\n", + " (data['Structure'] == 'Связный список') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Удаление'),\n", + " 'Time'\n", + " ].tolist()\n", + "ll_random_delete_average = data.loc[\n", + " (data['Structure'] == 'Связный список') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Удаление (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "ll_random_search_average, ll_random_insert_average, ll_random_delete_average" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "5434d260", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(np.float64(0.034479), np.float64(0.193979), np.float64(0.024509))" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Получение данных для Связного списка\n", + "\n", + "ll_sorted_insert = data.loc[\n", + " (data['Structure'] == 'Связный список') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Вставка'),\n", + " 'Time'\n", + " ].tolist()\n", + "ll_sorted_insert_average = data.loc[\n", + " (data['Structure'] == 'Связный список') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Вставка (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "ll_sorted_search = data.loc[\n", + " (data['Structure'] == 'Связный список') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Поиск'),\n", + " 'Time'\n", + " ].tolist()\n", + "ll_sorted_search_average = data.loc[\n", + " (data['Structure'] == 'Связный список') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Поиск (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "ll_sorted_delete = data.loc[\n", + " (data['Structure'] == 'Связный список') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Удаление'),\n", + " 'Time'\n", + " ].tolist()\n", + "ll_sorted_delete_average = data.loc[\n", + " (data['Structure'] == 'Связный список') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Удаление (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "ll_sorted_search_average, ll_sorted_insert_average, ll_sorted_delete_average" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "3deed9a5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(np.float64(0.0), np.float64(0.003635), np.float64(5e-05))" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Получение данных для хеш таблицы\n", + "ht_random_insert = data.loc[\n", + " (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Вставка'),\n", + " 'Time'\n", + " ].tolist()\n", + "ht_random_insert_average = data.loc[\n", + " (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Вставка (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "ht_random_search = data.loc[\n", + " (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Поиск'),\n", + " 'Time'\n", + " ].tolist()\n", + "ht_random_search_average = data.loc[\n", + " (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Поиск (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "ht_random_delete = data.loc[\n", + " (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Удаление'),\n", + " 'Time'\n", + " ].tolist()\n", + "ht_random_delete_average = data.loc[\n", + " (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Удаление (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "ht_random_delete_average, ht_random_insert_average, ht_random_search_average" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "490e5c46", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(np.float64(0.000163), np.float64(0.003181), np.float64(0.000109))" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Получение данных для хеш таблицы\n", + "ht_sorted_insert = data.loc[\n", + " (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Вставка'),\n", + " 'Time'\n", + " ].tolist()\n", + "ht_sorted_insert_average = data.loc[\n", + " (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Вставка (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "ht_sorted_search = data.loc[\n", + " (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Поиск'),\n", + " 'Time'\n", + " ].tolist()\n", + "ht_sorted_search_average = data.loc[\n", + " (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Поиск (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "ht_sorted_delete = data.loc[\n", + " (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Удаление'),\n", + " 'Time'\n", + " ].tolist()\n", + "ht_sorted_delete_average = data.loc[\n", + " (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Удаление (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "ht_sorted_delete_average, ht_sorted_insert_average, ht_sorted_search_average" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "9d7274ab", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(np.float64(0.000481), np.float64(0.006081), np.float64(0.000336))" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Получение данных для дерева\n", + "bst_random_insert = data.loc[\n", + " (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Вставка'),\n", + " 'Time'\n", + " ].tolist()\n", + "bst_random_insert_average = data.loc[\n", + " (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Вставка (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "bst_random_search = data.loc[\n", + " (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Поиск'),\n", + " 'Time'\n", + " ].tolist()\n", + "bst_random_search_average = data.loc[\n", + " (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Поиск (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "bst_random_delete = data.loc[\n", + " (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Удаление'),\n", + " 'Time'\n", + " ].tolist()\n", + "bst_random_delete_average = data.loc[\n", + " (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Удаление (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "bst_random_delete_average, bst_random_insert_average, bst_random_search_average" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "92a545c9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(np.float64(0.064886), np.float64(0.95269), np.float64(0.060593))" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Получение данных для дерева\n", + "bst_sorted_insert = data.loc[\n", + " (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Вставка'),\n", + " 'Time'\n", + " ].tolist()\n", + "bst_sorted_insert_average = data.loc[\n", + " (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Вставка (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "bst_sorted_search = data.loc[\n", + " (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Поиск'),\n", + " 'Time'\n", + " ].tolist()\n", + "bst_sorted_search_average = data.loc[\n", + " (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Поиск (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "bst_sorted_delete = data.loc[\n", + " (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Удаление'),\n", + " 'Time'\n", + " ].tolist()\n", + "bst_sorted_delete_average = data.loc[\n", + " (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Удаление (среднее)'),\n", + " 'Time'\n", + " ].iloc[0]\n", + "\n", + "bst_sorted_delete_average, bst_sorted_insert_average, bst_sorted_search_average" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "b2e93d6e", + "metadata": {}, + "outputs": [], + "source": [ + "# countUsers = 10_000\n", + "# countRepeat = 10\n", + "# countRandomSearch = 200\n", + "# countNotExitstSearch = 100\n", + "# countDeletes = 500\n", + "\n", + "countUsers = 20_000\n", + "countRepeat = 20\n", + "countRandomSearch = 1000\n", + "countNotExitstSearch = 500\n", + "countDeletes = 1000\n", + "\n", + "ll_col = 'blue'\n", + "ht_col = 'orange'\n", + "bst_col = 'green'\n", + "\n", + "iterations = range(countRepeat)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "208784a5", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABWIAAAJKCAYAAACmkjw+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3QeYFEX6x/GXIDmICEoWJIkBcwYEc0QROSOgnhEVDKgYQP+KnGcATIiIWTEgeoenGDCA4pkzOYgkSZIlM//nV3s19szO7s4uk3bm++GZZ5menqnu6p6e6rffrioTCoVCBgAAAAAAAABImrLJ+2gAAAAAAAAAgBCIBQAAAAAAAIAkIxALAAAAAAAAAElGIBYAAAAAAAAAkoxALAAAAAAAAAAkGYFYAAAAAAAAAEgyArEAAAAAAAAAkGQEYgEAAAAAAAAgyQjEAgAAAAAAAECSEYgFAAAAAJTY3Llz7a677kr3YuSkTz/91J5//vl0LwYAIE5lQqFQKN6ZAQDpsXz5chs8eLBNmjTJdtllF6tWrZpVqFDBevbsaQcddJCdc845NmrUqHQvJgAAyDFr1qyxc88911588UWrUaOGffzxx/bkk0/azz//bD/88IN1797dnn322Yj3PProo26e77//3ho1amQnnXSSPf7442lZ/m3bttmgQYNs1qxZtnr1avvtt9/s6quvtgsuuCBivi1bttj//d//2ebNm22nnXZy63fddddZ27ZtI+b7/fff7c4773TrtXXrVluwYIHdfffdtvPOO0fM9+WXX9rw4cNtjz32sMWLF1v16tXt1ltvtXLlykXM98ILL9jnn39uzZo1s+nTp9vRRx9t3bp1i5inf//+dsQRR9jxxx+f8PoBACQWgVgAyHDvvfeenXfeedanTx+7/vrrrVKlSm66TgTUsF+0aJGNGDHCOJwDAIBUUzCya9eudvjhh0dMf+aZZ1ym5ocffmhvvfWWnXzyyfnee9xxx9no0aNdADdd+vXrZx07dnTLIp999pl16NDBBV1vueWW8HyXXHKJtWzZ0vr27eueL1261Nq1a2djx461Fi1auGmbNm2yAw44wEaOHGkHH3ywmzZhwgTr3bu3C7zusMMObtq0adPstNNOc9Nq1qzppqk8BWQVpPYU3H755ZddGT5ofMIJJ9jf//73iGCsAr5nnHGGvfTSS+5iPQAgc9E1AQBkMGWVnHLKKa5xriwJH4QVNeaVcbFs2bK0LiMAAMhNkydPth9//DFfENZ74IEHrF69enbFFVe4zNloel86g7Dz5s1zy+WDsKLMUgU11cZSYFSU/aqs3ssvvzw8X506dezEE0+0AQMGhKcpy7dKlSrhIKy0b9/e/X366afD026//XY7/fTTw0FY6dWrlz3xxBMuSOszcBX0vfLKK8PzlC1b1s2nC/MKynrKoj377LPtjjvuSGj9AAASj0AsAGSoP//8093q17p1a3cCU5ChQ4damTJlUrpsAAAA9913X0RwMtqOO+5ojzzyiAt43nTTTZZpdMu/ugeI7hbh0EMPddmtel1ee+01a9Kkies+IEjdErz55pvuLiV55ZVXbJ999slXjubTZ8iGDRvs3//+d775ateubQ0aNHAZwjJx4kR311P0fPqs+fPnh5fNO+uss+yNN96IGfAGAGQOArEAkKGUOaEGuLolKIz6IIvV6AcAoCSCmXa5VDbyqKujeLaDApWvv/6667O0MF26dLEzzzzTBTsVXMwku+22m1vX6OCl+uEP+vbbb61WrVr53q/g6fr16+2XX34pcr6vvvrK/V/zbty4scj59FkSPZ/mET9f8E6p/fbbz/71r3/FufYAgHQgEAsAGertt98OZ2UU5Z///Kf7O378eHc7nBrpmjZw4EDXrcE111zjujj47rvvIt6nPsV0YvTggw+6/mY7d+4cLtcbNmyYGxBMWbfKZtFthvqrvt50q57oBEblKZNDt+SpTAWRdYJ27LHHuvdq0It33303/LnvvPOOXXjhhfaPf/zD3Uqnz1SWiCgbRJ+v96kPtA8++MDdqnfzzTe72/LatGnjllkni/qr5+XLl3eDVUyZMsV16dCjRw/3fn2Oz0KRL774wg1yprq555573C1+K1euLLR+NXiH1mnXXXd1g23ce++9dv/997uHbl/0y6k+8Iq7DUTLp1sPNb/WQf3VrV27Nvz6U0895W7fVDnqZ07roBO0a6+91k3Ta7odUoO66RZI1edjjz3mtpX6tNNgbspG8n3fXXbZZe59nTp1cuugetCy6ZbIaPoc9U+srCf1laf10e2SQao/3cKp7a911WeqXJWh2z3Vx50GK1E5yiZq2LChW1ftN+o/8Mgjj3Tzqo7++9//un4FlXmkWzdVngZF0cmy9hX1Raj+7379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CM/7+eefu2WrUKGCe+j/n332mXtt6tSptsMOO7iszZNPPtm++OKL8Ptmz55tjz/+uN1zzz120003uf7Qhg8fXqI6LKqePE0744wzXFapbve7++67Xd1p+XbccUd3q79u+//3v/9tp5xyilv/WrVqubr1fvjhB9tjjz3ce1R/CxYssBdeeMHOPPNMN3/Dhg3t1ltvtV9//dU++eQT6927t6uDihUr2vXXXx+uG/n000/t4YcfdnWrLgZOPPFE++ijjyKWecqUKXbzzTe75ahdu7bNnTvXzjnnHLcdlSF76aWXunJPOukke+yxx9x7Bg0a5AYA0XQtq+pj3bp1NmrUKDv77LPd9MaNG9vtt9/u6u6dd95x+4GmazlVh9qu0V577TVXtuZr1KhR+P3PP/+86zZB0/XQ9pStW7eGl2Offfax2267Le5t+tNPP7n60nbp27ev21b/93//F97Hta1VbnH2J9XBnXfeaW3atHGfceihh7r5ZdiwYa7+NX3PPfd082nQlGCdaVn02domfr9XfQW3bXB76T16rz4j2ldffeXe49/vvzcTJ050A7Romt7frl0727x5s3uP9lVNU9+CvXr1skWLFsVdnwCA0oO24fa3DdUO0zpfe+21bln1/yFDhri2iaf11W+7BlHT777aBVo/lavnuvBdvnx5102Epwvhek3LrnW/5ZZbbOjQoW67BKn+VLbadyr/6quvduX9+eef4XnGjx9v++23n9tGhxxyiH399ddufn1u165dXdvqxx9/jPhcLZ/uiFIbTO0jLZ+2h9pYan+o3ecv0Afbg75ts3HjRre9u3Tpkq89+OKLL7r2Wr169eyss86y9957zy23lufUU0+1Cy64wNVrrIDXyJEjXX1pn9O2U/t08uTJEfOp7X3wwQe7ctUHsm/bqSx1vaUB7aLbbSNGjHBJCFpG1YfWWdOD1IY74YQTwu1w1cXChQsj2rc77bSTq59ffvklYv/Ua1pWzav3qBy1cTVdbV7VSXT7UXXq249BS5YsiXi/2oB6v9ZLZateNb1JkybueyA659A21FgPqoNY7e+CaL/T91l16s9rzj333HA9aN/U2BLBdvzgwYNdnffo0cPNq+9cULDOVD/ah7VM0e3bK664wiWDRNeZvjvaHtH7n7a3jhfR20vv89sr2n333Rd+v/5q/UTbYv/993fT1Ye2P/bM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V15pc+fODU+bM2eONWnSJOnLDAAAgBzomqAkfWeJAqsDBw60mjVr2i233JLv9datW9vMmTPDzw844AB74oknbP/99w9PmzJlij3++ONuXgVtN23aZLfddpuVL5+x1QUAAIAMp0Drli1brGrVqhHTq1Wr5v5OmzYtX5BWLrvsMnvkkUesTZs2LnP2tNNOs/vvv9/uu+++QsvbuHGjewTbybJt2zb3SCZ9figUSno56SwzF9aRMrOnPMrMnvIoM7vKzIV1zIUytxWjjPLZ0neWMgSGDx9ulStXtqefftplDcRy+umn2xlnnGErV660Fi1auEeQpp900kluMISdd97ZTRs8eLBdffXVNmzYsISvKwAAAHKDLvBL9MV9/9y/Hq1Bgwb25Zdf2gknnGA33XST3XXXXTZu3DirU6dOoeUNGjTI7rzzznzTly5dahs2bLBkn5CsWrXKnQClakCxVJeZC+tImdlTHmVmT3mUmV1l5sI65kKZa9asKd2B2IL6zurXr1+BgVjdmqXgrYwcObLAz1YGwuGHH17g6w8//LDts88+4SCsdO/e3XbZZRe79dZbrWHDhiVcKwAAAOQy37bVCUGQfx493VPQVBmxQ4cOtXnz5rm7vjp06OCmXX755QWWp7bzddddF5ER26hRIxfArVGjhiX75Efrq7JSecKVyjJzYR0pM3vKo8zsKY8ys6vMXFjHXCizUqVKpTcQ6/vOuuaaawrsOyvWLVuJouyCgw8+OGJa7dq1XQD3vffes4suuihpZQMAACB7qessUbdXQb77AP96tL///e/ubi+fTHDmmWdar169rE+fPnbqqae6jNmC+pbVI5pORlJxEqSTn1SVla4yc2EdKTN7yqPM7CmPMrOrzFxYx2wvs2wxPr98tvSdFS91PTBkyBDbaaed3IBdSh9Wn7L+ljAFezt27JjvfSpfZWda/1u+HPowoczSUB5lZleZubCOuVJmLqwjZWZXeaWV2rDlypULtxU93TYn0V1mydq1a+2nn36KuKNLmR2vvvqqderUyb744gvr0qVLCpYeAAAA26t8tvSdFS8FXnULl08bvuCCC6xv376uH1j/+bEG5dK0gspOZ/9bQh8mlFlayqPM7CozF9YxV8rMhXWkzOwprzh9cGWaKlWq2JFHHhkxcKzMmDHDGjdubC1btsz3nq1bt7o7xmLZe++9i+wn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/74DpZXOs3S+lYg2aokzYgcOHGiHHHKI60/12GOPtfr167uFUt+tb731luun9auvvtruBQQAAPHJhH41gWzZh2nrAgCQfb/vQElkxGBdDRo0sE8//dQuueQSN2qsFkqNUznssMNs4sSJ1qhRo4QtKAAAAJAqtHUBAACQaCUOxMpuu+1m77//vusf6/vvv3f9f+y1117Wpk2bxC0hAAAAkAa0dQEAAJAxgVhv9913dw8AAAAg29DWBQAAQCKUeLAuAAAAlNzixYvdyKs//vije37ooYfaQw89lO7FAgAAQI6ifVpKMmIBAEB22rrVbOJEs0WLzOrVM2vXzqxcuXQvVXZYv369rV692jZt2uSe6/96AAAAoGC0T5OH9mnyEYgFAAAxjRlj1ru32fz5f01r2NBs6FCzLl3SuWTZ0//ov//9b3vjjTfshRdesAsvvNB6q8KR9caOHesG+2revLnrf7Zt27Z27rnnFvm+V155xSZNmuT2HQ0epiwVPQAAyBW0T5OL9mny0TUBAACI2cjt2jWykSsLFuRN1+upsm3bNrvjjjusV69eNnjwYHvwwQftt99+s1WrVtk///lP22GHHezSSy+1kSNH2v/93//ZOeecY0uWLAm/X7dWXXTRRfbwww/bM888YzfccIMLYt166602f/58u+CCC2zo0KH2/PPP27Bhw6xnz5527733/m99F9iAAQPc/FdddZVNmTLFxo8fb8cdd5zVrl3bHn30Udu4caP7u9NOO7npej3oww8/tOOPPz7m/A888IAdeeSRds0117hlrlixoltXLVdhRo8e7Zb7vvvusyFDhtinn37qpj/99NPWrFkzO/roo+3JJ590D62Llv/KK6+0X375xT766CO3nDvvvLM99thj9ueff7r1rlWrllvO4PLr9YsvvtjVucr56aefwq999dVXri6feOIJu//++10der4MreMjjzzisipmz57tlqNDhw7h5c1Fn332md1zzz1uu2i/1V8FWF9++eVC33f33Xe7fUn1fO2117rvgPYbAAByBe1T2qfFaZ9qO6h+M659GkLCrVq1KqSq1d9U2Lp1a2jRokXubzaWR5nZUx5lZleZubCOpaXM9evXhyZPnuz+lsS2bdtCmzZtcn9ly5ZQqGHDUEithFiPMmVCoUaN8uYrqegyC9OnT59Qr169ws979uwZ+tvf/hZ+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kJUyTfUoiY4dO1r//v3dLV+tWrWy2bNn25lnnmndu3d3r69bt85lqK5duzb8npUrV9rgwYNt8eLFLtD64osvukzW1q1bW8+ePcODU7z99ts2cOBA23vvvd179BnDhg2LGADivffec1mxkyZNcp+h9XjjjTdKtC4AAAAofZLZ1gUAAEBuKnEg9sQTT3QZorfccosdeOCBrnGqhxqkCmRqpLOnn366xAvWuXNn94hFo9QqiBqkQbZuvfVWN2Lv448/Hl4ejWwb1KZNm4jAa0GDVzz66KMlXnYAAACUbslu6wIAACD3lDgQe+GFF9pvv/1mp5xySjhDQIFQUTD0kUceCfe7mgrqsiDYd1dw1F0AAACgNLd1AQAAkMOBWN+X6xlnnGHPPfecTZkyxQU999lnn4g+VwEAAIDSiLYuAAAAMiYQK2qM3n///YlZGgAAACCD0NYFAABAomz3ffsfffSRnXfeebbffvvZ/vvv7zIEvvrqq8QsHQAAAJBGtHUBAACQERmx119/vQ0ePDg8WJZ8//337vatQYMGWd++fROzlAAAIC22bttqE3+baIvWLLJ61etZu8btrFzZculeLCAlaOsCAJB5aJ8iJwOxw4cPt1deecUeeughlyVQq1YtN3358uX2zDPP2H333Wdt2rSxk08+OZHLCwAAUmTMlDHWe1xvm796fnhawxoNbegJQ63LHl3SumxAstHWBQAg89A+Rc52TTBq1Ch3W9ZVV10VbphK7dq1XfbAF198YY8//niilhMAAKS4kdv11a4RjVxZsHqBm67XgWxGWxcAgMxC+xQ5nRG71157Wb169Qp8vUmTJtaqVauSfjwAAEjj7V7KNAhZKN9rmlbGylifcX2sc6vOKbkNbMuWLfbYY4/Zyy+/bBdeeKGFQiHr37+/7b333nbjjTdax44d7c4777SKFSvazjvvbNOmTbO7777bdthhB+vZs6e9++67dtNNN7n3adT7b7/91s444wzr1q1buIwZM2a4AZk0MNOSJUusRYsWdv7559uUKVNs6NChLjtSr+v2dAXnFIxTGfo80TRlT7Zs2dJWrlzplqV3795JrxskD21dAAAyR6a1TxPVRtV827ZtswoVKtjXX3+dkjbqNddck5L6QYIDsdpxiqIdKWj69Olu4wMAgMylPreiMw2iG7vzVs9z8x2121FJX57y5cu7BmOVKlXs73//u5v20ksvudvFjz32WLv22mtdUKxPnz7uNWUpKvD6yCOPuPkOPfRQ14h94oknXIN5w4YNtueee7oGateuXW3t2rV2yimnuEGZ6tev7z7j8MMPd0G2gw46yH2WGrnKgpTu3btbnTp1rHnz5m7gpp9//tmuvPJKmzRpUrh9pEa3GuL6i9KJti4AAJkj09qniWyjDhs2zH3WunXrXLdHqWij6oFS1jWBTmA+/vjjAl///PPPrWnTphHTtBMCAIDMpoEPEjlfomzevDnftAULFrjGrBqr3gknnGAvvvhi+HmlSpXsiCOOCD+vVq2aayz369fPPX/00UetUaNG4QauHHfcceHPKFOmTESZs2fPdn/VUJZbb73VTjzxxIjAnRrg//jHP+z3339PyLoj9WjrAgCQOTK1fVoa26j33nsvbdTSmBGrlOp77rnHDjvsMJfaHPTHH3+4frO0wdVIFWWffPjhh9u/xAAAIKk0+mwi50sUf4tV0HfffeeyXMeNG+cyCWTr1q3WqVMn1yguKKuxbdu2NmDAAFu6dKm7ZUsZBxqAydOtZcpgCNLra9assXfeecc+/fRTd9uZKEtBbZ6ghg0buvLVDjr11FMTsv5ILdq6AABkjkxtn5bWNup///vfiCAxSkEg9vnnn7c///zTpTjHosi+Nrq3fv1627RpU0mLAwAAKdKucTs3+qwGPojVD5f64NLrmi9V1AitXLlyvukKfokakjvuuGN4+sUXX1zo56kR6xvO+oxdd93V9dVVGP/6pZde6hrRylbQ7WJqZKtvryD/XK+hdKKtCwBA5sjE9qnQRkXKuibYZZddXKr1nDlz4noo7fnII48saXEAACBFNMDB0BOGhhu1Qf75kBOGpGwgBBk/frwddVT+/r6UragsA2UvBn3//fcRDU/fqPU0YNcee+zhBjRo165dvvf7eWJRdqT65/J9a2kZfvvtt4h5fv31VytXrpzr+wulE21dAAAyRya2T0tzG/WQQw4p5poi7YFYjexWvXr1Yr3nqquuKmlxAAAghbrs0cVGdxttDWo0iJiuTANN1+upoizDX375xRo3bhwxXQ3XBg0a2HXXXef64PJ029ebb74ZcZtYMHNRI8Y++eST9sADD7jnV1xxhcsKUEPa+/HHH23WrFnhcmI1gNWHqOj2dZWn7ElvyJAh1rt3b9evF0on2roA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btw4yWsMAACAbLdixQr3t3z5yCa4f+5fj+WZZ55xXRioPRyvQYMG2Z133plv+tKlS23Dhg2W7BOSVatWuROg4ixzaSozF9aRMrOnPMrMnvIoM7vKzIV1zIUy16xZU7oDsQX1ndWvX78CA7EDBw60E044IRyE9e9RNus111xjlStXdhV/3nnnRbxv3LhxblqTJk3C05RJ26FDh6SsGwAAAHKTb9vqhCDIP4+e7k2dOtUqVqxY7Luz1Ha+7rrrIjJiGzVqZHXq1HGJCck++dH6qqxUnnClssxcWEfKzJ7yKDN7yqPM7CozF9YxF8qsFIhFlrpArO87S8HTgvrOitUIVUD1xhtvzPceRb8///xzF5C99tprI15fvny5vf/++/bAAw8kaW0AAACAPDVr1nR/N23aFDHddx/gXw9SVwajR4+22267rdjlKXirRzSdjKTiJEgnP6kqK11l5sI6Umb2lEeZ2VMeZWZXmbmwjtleZtlifH75bOg7a926da5P2MLeo0BsuXLlIl5XH1u33357vmXQQF6DBw+2nXbayWUgKEM2OsibKf1v+XLow4QyS0N5lJldZebCOuZKmbmwjpSZXeWVVmrDqj3q24qeEgekRYsW+d7z9ddfu4Flb7755ohp6sZA0/bee+98d3wBAAAgM5XPhr6zSvKeb7/91gVPd9lll3yvqc8s9S/rI9rt2rVz2QSalmn9bwl9mFBmaSmPMrOrzFxYx1wpMxfWkTKzp7zi9MGVaTQg7JFHHmkzZ86MmD5jxgw3JkHLli3zvefQQw91j6A77rjDfcY//vGPpC8zAAAAsjgQW5K+s0rynvvuu89OPfXUmMvw/PPPRzxX37PKnr3iiiusQoUKGdX/ltCHCWWWlvIoM7vKzIV1zJUyc2EdKTN7yitOH1yZSG3KG264wfr27RtOGhg1apTdddddrh4nT55s55xzjj344IN29NFHx/yMrVu3lurMYAAAgFxVPhv6zirue1auXGljxoxxDeF46MRCmR7qo3avvfbKuP63hD5MKLO0lEeZ2VVmLqxjrpSZC+tImdlRXirrMRk6duzoBqZVILZVq1auW64zzzzTunfvHu5ya+7cubZ27dp87/3111/tiSeesJdfftl1V3DllVfacccdZ6effnoa1gQAAAClPhBbkr6z1BdsvXr14n6PBgNT0Fbvida2bVs76qij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rzsAAAAAAACA7JNxfcRKx44drX///ta3b19r1aqVzZ49284880zr3r27e33dunU2d+5cW7t2bfg9rVu3tmeeecYFXvfee29btGiRNWnSxG688cbwPCeffLIL8L777ruuH9gpU6a4QbouuOCCiD5j3377bRs4cKD7nJUrV7pyhg0bluJaAAAAAAAAAJAtMjIQW1B/rp66F1CANJq6NNCjMF27di2y7DZt2hB4BQAAAAAAAJDdXRMAAAAAAAAAQDYhEAsAAAAAAAAASUYgFgAAAAAAAACSjEAsAAAAAAAAACQZgVgAAAAAAAAASDICsQAAAAAAAACQZOWTXQAAAAAAAACA9Nq61WzCBLOlS83q1DFr396sXDnLOlszeD3JiAUAAAAAAACy2JgxZrvtZnbMMWb335/3V881PZuMyfD1JCMWAAAASLGxY8faxIkTrXnz5jZr1ixr27atnXvuuQXOHwqF7KmnnrJ58+bZkiVLbOrUqXbJJZfYOeeck9LlBgAApY+CkF27qj1hVjaQkrlgQd700aPNunSxUm9MKVhPArEAAABACn322Wd2zz332KRJk6xMmTJuWufOna1s2bJ29tlnx3zPsGHDrH379nbxxRe757/88ovtv//+NnfuXLv55ptTuvzIHZl8aycQC/ssEPt70bt3XnAymqapKdKnj9oipfv7srWUrCddEwAAAAAp1L9/f+vWrVs4CCs9evSwAQMGFPieoUOH2hNPPBF+vueee9rpp5/uArqbN2+2TDsR+uSTvGCI/up5tsmFdUzXrZ3pqNtUl5kL+0861jMd+2wu7K8o/dty4kSz+fMLfl1Bynnz8uZLhlxZz3gRiAUAAABSZP369TZhwgRr1qxZxPSmTZva9OnTbfbs2THfV716ddclQfR71qxZY3/88YdlilwI3uXKOuoWzugTWn9rZ7LWNR11m+oyc2H/SVe9pnqfzYX9NdcCztn6W7JoUWLnK45cWc/ioGsCAAAAIEUUaN2yZYtVrVo1Ynq1atXc32nTpuUL0srXX38d87Nq1/7/9s4DPopq++NnU0gIpFACBAJIRxRQEUWKYAOsKPJ8ir089dmwYgd9FuzY9QmK7YkFRf8o2AsoogKCIIp0kNAhJAQSSHb/n9+dnc3M7GyyG3Z2k53f9/PZT7Izs3Pm3rlz5txzzz23iTRr1sxWVllZmfroFBUVqb9er1d9os2HH4qcdZael80rHo9P/UWHB9vffVfk9NPFEbk33CBSUOCVww7zyfz5XmnZUmT8+OjLc0MZ4XiALARs42MsJ5oNtt14o8ipp0Z3amc86jbWMt3QfuJRzni0WTe013i1HzfIjPW9bNHCnC/VKNN6XDTNA7eUE0RiV9ERSwghhBBCSIzYsWOH+puSYjbD9e/6/urYsmWLTJ8+XW6//XZTigMj48aNk3vvvdf2t6WlpRJN0P+YMEHksMO07x6PVzp23ImJgOLzab2iiRNF+vQxd5L2l9mzRR56SKR5c3SszDKxHfTtGx1ZbigjWLRIk4VPqHKCb78V6d697tZtrGW6pf3Eo5yxbrNuaK/xaj9ukBmPe9mli8jgwSLbtoWW2bSpdpxl8k2NcUs5dTBDKVzoiCWEEEIIISRG6E5Tn2UlCf27dXsobr75ZjnllFOUIzYU2HcjwsAMEbGtW7eWiopcqajICmxPTxdp1EikvFxb4MZKXp72d+tWEWs62pwckfr1RT79VOSzzyq3I/pk374kWbSoqVRUJJk6u0cdpf2PQF5EpyGzgiFwV5GZiShhpHIQKSw074PPGovwIAruuusQvVQpc+/eZFm0qEmgw4X9kKlHwSEQOStLk2fN6ICOoO7I2bQpOFpm8WKRzz+vXATEKM/rTVJRd9hnLKO1DlG/qGe7Oty1Cx254LIiQgs57ULJxC2eMyd4Ci3KifLa1WFqqtYZtZuiuWwZIrC1KEI9iskoE2Afftetm/m3qGc9QNuuDps0EalXD21RpKSkcvuPP2rtpzqZS5dqMq11iPaLdmxXh3r7Rv0YO966TP3c6LBbZQLI7N1bZCf68gZQDpQH17txowSht2+MrWDcwyhPqytEa3rk119zTfJ++klbSAbgvFaVgPuG+4fr2b3bvE9v33v3ao4I6zMCmSIemTdPk4ly688Inqm0NK3+UI92dRiOjvj++2BdYJSpA5kDB2p1iHaC9hKqDqvTEXqbtcqcPx+6rlImjkP70esQzwV+b1eHVekITFm3ltGoe/R7ZtQFeMbxrEOHop5C1WEoHfHzz5HLBLheXDfaA9pFJDoC97wq/YPzYmGkH34wRxrjvuD+2NVhdToCZa1OJvYjx6dRJtoyohxD1WFVOgJlramezc4WycjQnsVwdUQkuufIIzUdYvcOjFRHIEXH5ZdrMkWC35dwmup1CF1pLWvjxpHpCGs5dbvgt9+amsr522+a8xTvBP/EnaA6jERH6OUEWlS8pmf1ciLdPn6j16FdmoKa6IiKinQJFzpiCSGEEEIIiRHZ6LUJOsTmHrGeQkDfXxXPP/+8+v2bb74pSVWEkaSlpamPlddeS5K0tMrf9eghMny41rFCR8zKPfdof//v/4LzL+J3+P28eebOYEWFRwoL01VnyxiRNnmy5tAEt9yidWi++ELrcBoZMkRzJqxeLfLee8EOiyuu0HL4If+jUebmzQ1MMrF/zBgtHx3o31/LT4cO3auvms+LjpXut8Z1WjuE6IQanQa6vIoKeAM8gfIbywjQ4bv77sppmtZO3z/+gcXXRH7/3exo0WSIrF1btcw1a0SeflrrsBo56SSRI44QWbEiOBdffr7IZZdp/1vvOeoc59XLY5UJsA/lsv4WdQTHHnjjjWBH4aWXirRurTkb0Uk3RjSGIxNOhyVLgp2B55yjRTgtXCjy1VfmfXC8YQqstX3rMvVzw1FglQkg86+/tPZvBG3qoos0x4Pdc4O2hDaF68E1G+UBtKXS0pQgeZBzxhna/6+9FuyARNvHMwCH2y+/mPfhmcGzg/p5+WXtXhqfEcj0+TyBZwTXoz8jd90l0rGjyK+/apGjRiLRETNmBJfTKFMHzwkcHOefrzkn7c4bro6AkzIcmTgODqarrtIcOHAaz59vPm84OsLq/LLTPVZdgKjA007TnGPWsoajI2oiE2CsDo47DJZBF0SiI9AeqtI/0E94Jxh1LBg0SPugbb35ZmQ6As9rdTKx3yoTrzp9XHLKlMh0BOo1HD375JOaw9EI7inubSQ6IhLdA+cw7qkROBCvvrpmOuKOO7R2jXujy8zK8sjQodoAgW5SIGWA1Yl+3nmR6QhrOcGOHfWDyol7Avl//CEyfbr5vB061ExHwBn7zTfaAERpaaqpnKhTPGeoJ/DKK8FO55roiLKy8MN66YglhBBCCCEkRiD/a3JyciBfq85OfyhNp06dqvz9tGnTZNWqVfLWW2+p6FqkMkB+2VSEboTJxRdr0Uo6escSTga9Y2IH8rjZRcSCww83b0dOtpycMtV5NTJyZOX0Tl0uHCrotBvRrw/pcq3XpGd1sDorIDM3d7ds2JBh2g5Hg+7Y0lPz6s5cI0af9rnnBkdqoVMZSh6cPnZltIKOql20G8CUaaNjAXz8cXgy8TvkvzSC+wnQpKxlNTYX6z50SL/8Uoui1JwEwTLhTEWdWiPAjBFqF15oHxEL4EBDx10HDgOjIyhUOXHf0AG2i3YDhx6qOQqM6O0M995YVqtMEEpm166VEYs6uuMbZbZ7bvS2dsIJIgMG2MtLS6tQZTXK06Nh9WfVLtpNdwboU36tMhEFiWuaOlVz1FQHnhHcU9Crl+awMhKJjsC9CGcRHjwn+nOP9mh33nB1xP33a9HqVS3Ag1yfOA73S28vRx+tRTsbCUdHWNtCKN1j1AWIiAWQXVUdhtIRVsdiODKNzzqcrnYRsVXpCDi3Qsk0tlmjjgX+lOeqTVnPW52OgO6piUxjhh4MvESiI8LVs2hrVj2rj51GoiMi0T1t24Z+B9ZUR2DgBM7oVat2S5MmGdKnj0ddo/EdePbZ9hGxkegIu3Lm5JSKx5NpKuchh2h/MSCp6yFrHdZERyBSGU7U9evLJT3dFyintQ71QUkjNdERiBTW01hUBx2xhBBCCCGExIiMjAzp37+/LF++3LR92bJl0qZNG+ncuXPI3/7888+yePFiefTRRwPb3njjDbnyyisjugZMPdQ74EbQMbF2JO06d3ZgWiEiqBBlo0f4pKRU9g7xHfvhqLEulqN37uyA80J3YFgJdoag04aFOcwdU0RYWY9F9FRVZdVTFBhBdIy1jEZ5VZVRR58KaQecF7oDQ8fqlw9VRjSbUOWpqg6B3e8QYYuIIn3xI12mDiLD0MnFJ5I61EH7M7ZB1Fk4dQuHZlWLLdnVoQ5+ZyxrpDJDlRXHVdWW9A69VR6A48Mqz+jo0acJ2wEHUKgAejgvcE3W1BHGa7Y+I3rwPBycxoGaSHWEXb0aZdo9J6iHqs5bnY7A+Z59VmuzuixjWcEzz2jHWR2c+kCIlap0BNpETXUBHEpVlTWUjtgfmcZBkEh0xP7o2JrqWasjLlKZ8dKzVelDq46IVPdUVYc11REY0Nq82avea3YTa0KsARqRjrDTeampvqBy4lp0B6dlHdMANdURSH+CKPhQ5QRVnTcSHRHq2u2IYhpnQgghhBBCSHWMHTtWpkyZIuWGkJ3JkyfLfffdp6JclyxZIj179pSvDPMnV6xYIWPGjJG8vDx59dVX1WfChAkye/ZsqWedkx4H0Fl86intf+vaYfp3OO+itWK50TERYq0ytR2dehwXDdxQRmNUHqb3tmpl3o5rwXbsjybxqNtYy3RL+4lHOWPdZt3QXuPVftwgM17PSKxxSzlrAh2xhBBCCCGExJBjjjlGOVVvueUWefHFF2X06NFy5plnygUXXKD2l5SUyJo1a2SXYTWMk046ST777DO5+OKLA5/LL79cHVtbcIPzzg1l1EFZkH8TU4Vvvln7u2pV9MsYr7qNh0y3tJ943MtYt1k3tFe3OJzd8C6JF24pZ6QwNQEhhBBCCCExZtiwYepjR+/evaXQsoT1UutKNbUUdKpQLCykhZyGmCKKHGtORbzonTys3K2vDK938tBxdsoZkuhl1EGZwpnaWVfrNh4y3dJ+4nEvY91m3dJe46Fj3SIzHs9IrHFLOSOBjlhCCCGEEEJI1HCD884NZYwXsa7beMh0S/uJx72MNW5or25wOMdLphueETeVM1zoiCWEEEIIIYTUadzQyXNDGYlzsP2Q/cENDud4ySTug82KEEIIIYQQQgghhBBCHIaOWEIIIYQQQgghhBBCCHEYOmIJIYQQQgghhBBCCCHEYeiIJYQQQgghhBBCCCGEEIehI5YQQgghhBBCCCGEEEIcho5YQgghhBBCCCGEEEIIcRg6YgkhhBBCCCGEEEIIIcRh6IglhBBCCCGEEEIIIYQQh6EjlhBCCCGEEEIIIYQQQhyGjlhCCCGEEEIIIYQQQghxGDpiCSGEEEIIIYQQQgghxGHoiCWEEEIIIYQQQgghhBCHoSOWEEIIIYQQQgghhBBCHCbFaQF1kX379klxcbH61KtXTzIzMyUjI0OSkui3JoQQQgghhBBCCCGEJJAjdtq0aTJr1izp2LGjrFixQnr27CkjR46s8jezZ8+W9957T7p27SoFBQXSqFEjuf76603HvP/++7Jw4UIpLCyUP/74Q4YNGyZXXXWVyckKp2t5eXng+7HHHisTJkyQ9u3bO1BSQgghhBBCCCGEEEJIolMrHbE//PCDPPjgg8qx6vF41DY4TOEsPfvss21/s3LlSrn44ouVkzU9PV1tGzVqlDz88MNy6623Bpyw2dnZ8p///Ed9h7P2kEMOkcWLF8uLL74YOBccs8OHD5c9e/ZIt27dpE2bNjEoNSGEEEIIIYQQQgghJFGplXPtx4wZI2eddVbACQsuvPBCGTt2bMjfPPDAAzJ06NCAE1b/zbhx45RDFTz//PPqo9OyZUvlvH3ppZdkw4YNge2IpB04cKA6H52whBBCCCGEEEIIIYSQhHPEwmk6c+bMoDQA7dq1k7/++ktFvtrx6aef2v5m586d8uOPPwYcrEaHq36Mz+eTtWvXRr0shBBCCCGEEEIIIYQQUitTE8DRivysDRo0MG1v2LCh+rt06dIgh2tJSYlKM1DVb5DndcqUKbbyUlJSpFOnToFt69evl/Hjx0vjxo3lzz//VA7c0aNHh7zmsrIy9dEpKipSf71er/o4DWTAmRwLWfGQR5mJI48yE0umG8roFpluKCNlJpY8QgghhBBC6iK1zhG7Y8cO9RfOUSP6d33//v4GwHn69ttvy0UXXaScrjqlpaUqv6y+gNeAAQMkLS1NbbMD6Q/uvffeoO1btmxR54pFhwSRv+gEGRcdSxR5lJk48igzsWS6oYxukemGMlJm4sgrLi52XAYhhBBCCCGucMTqeWFhzBvRv1u31/Q3el5ZpCZ4+umnTdvfeOMN03fkikV+2n//+99Sr169oPPcfvvtcuONN5oiYlu3bi25ubmSlZUlsegAoQ4gL1YdrljKo8zEkUeZiSXTDWV0i0w3lJEyE0eecT0AQgghhBBC6hK1zhGbnZ2t/u7du9e0XZ/6r+/f3998/PHHMnv2bPnkk0+kfv36VV4TOhaI9ECO2oMPPjhoP6Jl8bGCzkisOl3oACWyPMpMHHmUmVgy3VBGt8h0QxkpMzHkxbIeCSGEEEIIiSa1zpJF/tfk5ORAnlUdOEKBMZerMRdsXl5e2L+ZO3eufPDBB8oJi98ix+yuXbvUvp49ewalINAduvv27YtKGQkhhBBCCCGEEEIIIe6i1jliMzIypH///rJ8+XLT9mXLlkmbNm2kc+fOtr8bPHiw7W9wvn79+pkW53r33Xdl4sSJgSjWzz77TDZt2qT+R3Rs9+7dTedZtWqVioq1i4YlhBBCCCGEEEIIIYSQOueIBcjHOmXKFCkvLw9smzx5stx3331q6tuSJUtU5OpXX30V2H/bbbep78YFHPAbbEfUK9i2bZtceeWV0rVrV3n99dfl1VdfVQ7ZSZMmqVyx4Oqrr5Zjjz02cA78Bo5b5JFNTU2NUQ0QQgghhBBCCCGEEEISiVqXIxYcc8wxMmbMGLnlllukS5cuKor1zDPPlAsuuEDtRyqBNWvWBNIJADhX4ViF4xURrRs2bJC2bdvK6NGjA8eMHDlSvvjiC/UxgkhXPd/YeeedJ6+88oq88847Ss6ff/4pEyZMkBNPPDFm5SeEEEIIIYQQQgghhCQWtdIRC4YNG6Y+dvTu3VsKCwuDtiOlAT6hQAqC6kDE7aWXXhrh1RJCCCGEEEIIIYQQQkgdS01ACCGEEEIIIYQQQgghiQQdsYQQQgghhBBCCCGEEOIwdMQSQgghhBBCCCGEEEKIw9ARSwghhBBCCCGEEEIIIQ5DRywhhBBCCCGEEEIIIYQ4DB2xhBBCCCGEEEIIIYQQ4jB0xBJCCCGEEEIIIYQQQojD0BFLCCGEEEIIIYQQQgghDkNHLCGEEEIIIYQQQgghhDgMHbGEEEIIIYQQQgghhBDiMHTEEkIIIYQQQgghhBBCiMPQEUsIIYQQQgghhBBCCCEOQ0csIYQQQgghhBBCCCGEOAwdsYQQQgghhBBCCCGEEOIwdMQSQgghhBBCCCGEEEKIw9ARSwghhBBCCCGEEEIIIQ5DRywhhBBCCCGEEEIIIYQ4DB2xhBBCCCGEEEIIIYQQ4jB0xBJCCCGEEEIIIYQQQojD0BFLCCGEEEIIIYQQQgghDkNHLCGEEEIIIYQQQgghhDhMitMCCKmLVHgrZOaambJl0xbJ3ZMrR7c9WpKTkuN9WYQQQgghhBBCCCGkjkJHLCEWPvjjAxn16SgpKCqQXlm9ZF7RPGmZ1VKeGvqUDD9wuGNy6fx1BrfUq1vKSUhN4TNCCCGEEEIIiTd0xBJiccKOeHeE+MQnSYbMHeuL1qvtU86a4ogzNl7O30THLfXqlnISUlP4jDgHHdyEEEIIIYSED3PEEmLoTKKjDiesFX3b9Z9er45zwvn7d9Hfpu268xf7nQDl+G7NdzJz9Uz1N9rlijfxqtdY1208y+kGEv05cQN8RpwDdXfAUwfI8a8fL4/9+Jj6i++sU0IIIYQQQuyhI5ZERCI7JWatnRXUUbc6Y9cVrVPHJYLzN5E7z/Gq11jXbTzLGQ9dEGuZif6cxJNY3ct4PiOJ/s6kg5sQQgghhJDIoSOW1HqnRKw6shuKN0T1uNrq/HVD5zke9RqPuo1nOWOtC2It0y0R1fEglvcyXs9Ior8z4+3gJoQQQgghpK5CRyyp1U6JWHZk8zLzonpcbXT+xr3zjPNu/k5k00ztbwI51eNRt/EoZzx0QaxluiWiOh7E+l7G4xlxwzszng5uQgghhBBC6jJcrMtBVm5fKZnlmYHvDes1lOYNm8veir2ybue6oOM7NO4Q6KiVlpea9jVr0Ewy0zJlZ+lO2bp7a2A7HAELNy0UX7FPmuxuIq2zWgctktE2p62kJKWojubufbtN+5pkNJGc9BzZtXeXbNq1ybSvXnI9aZ3dWsm4evrVAQcE/pZ6S9Vffds106+Rg3MPDsjGOXHuPfv2SEFxgem8OOaAnAPU/6sLVwc5M1pmtpT6qfXltQWvyUUfXaS2ecQTkIn6OfPdM+W5k56TIR2GBH7n8XikfaP26n/UL+rZCOoe96CwtFC27d5m2peRmiED2gyQVpmtZH3x+qBy6teQ1zBPWjZsKSu2rwj8tmlGU8lOz5bismLZXLLZdN70lHRpldVK/W/8jfG3Rqwydbw+r+n3qcmp0ia7Tcg6hEzIRltBm9GZ8/ccU+fZKs/Yee7QqENQHbZo2EIa1GsgO/bskO17tpv2YTv2l3vLZU3hmqCytt+1QLzzRsn7mwtkY9LB0rhisRyR00ySu4+R3I7nSVZalhSVFcmWki22dejz+WTljpVB59Xb98ZdG6Vkb0mgvsKpV92pjvPi/Ebys/IlLSVNXQ+uywjuN+4dnlO0R7u6BWXesqC6/WLlFzK041BVf6hHI5HqCGs5QbmvPKicaC96vazasSpkHVanI7DQkVUX6NjpAugP6BE8F3g+jISrI9DurTL1ctvJhJ6EvrSrw3B1xIzlM4Kek73eymP1e/n24relT34fta1do3aS5ElSZUGZjISrI57/5XlV1nB1XqP6jaRx/cbqnlkdiZHoiO27t8vPBT/L9q3bpfHmxnJ8u+OlRWYLKSsvC2rT1dVhVToC8owObrt3CRzch+cdLvu8+0y/zW2QWyMdEa4uQHu06mj9HRipjkBdo01WV85hXYap982+in1BegnvpEh1xGcrPgvINbYf3EO0nzfPeFPO7XFukB0B8M7FuzdcHbFgw4KgYyp8FUH1unjTYhl0wKCQdVhTHbF7l1lPEUIIIYQQUlegI9ZBbvvqNknN0BwgYFDbQXJT35uUE/D6z64POn7aOdPU3/FzxsvSbUtN+27sc6Mc0+4Y+X7t9/LivBfVNnSIft/yu3LI9M7qLXOL5qpO4UG5B5miNtH5ghNg4vyJqrNt5NJDL5XTu54uCzYukId/eNi0r31Oe3nqxKeUUw5OLh10tNaWrjUdu2HXBuU0RacJjDhwhFx4yIWyfPtyuePrO0zHNqnfRF49/VX1/z3f3iPb9pidog8e+6B0y+0mN3x2g61MvaN30+c3yfR205VjAKCTOPWfU9X/j81+TFYWmjvkt/a7Vfq36S/frv5WXv71ZdO+I1oeIXcPvFvGHTdOLvjwApNMY8eyb5u+ctMXN5l+e2WvK+XkzifL3IK58sScJ0z7ujTpIo8Nfkz9b3fPXzjpBdWZ150dVpkoWbMGzWXy4sny9u9vB34Hh/BLp76k/r/z6zuDHIWPnvCodG3aVT7880P5aOlHge2609Bar9bOM9rWu7+/q5xNRu4acJccmX+kfLnyS3n9t9dN+/q17ie39b9NObqDyrpng5y/b57ctFXk73KR7JS1srPcJ+mbN8lBq6+WBwdtlMF9/qOcmc/8/Izpp3CwjTt+nHLw2tXhpGGTlKPr1QWvyg/rftDK5fMp54xxQMNazgapDZTzHdz25W2yp9zsPHtyyJPK8TllyRSZvny6aR8cKJcddplycN3yxS22davqsWxDUN3OL5ivHLGfLv9U3VcjkeoIu3LuKt9lkon9eL5HdBuhjrM7b7g6YvQXo4N0QVCZDboAjkM4A+GwhAPaSLg6Ao5Jq0w4mELJPKH9CXLdkdep31jLGq6O+HrV16btkLl1n9lxBR7/8fGAE/WdEe8o59mLc1+UXzf+GrGOgPMOOi0SnXfOwefIyO4j5c+tf8rYb8eazhuujhjzzRiZtGCSahvZKdmys3yncoC9fNrL0rN5z6A6rJ9SX979x7vq/3Hfj4tIR+CarA5u63OJ893+1e1StNd8vdceca0M7jA4Yh2BZySvfiPZuGeHkmIns3WDJqr9W3+Lgc3nT34+Yh2B5xdtsrpy4t361qK3TMeCewfdK4flHRaRjkA5v1r1lcn5a5WJd+rZB59tsiN0Dm1xqPznmP+ErSOsg5lgd8XuIJ3wzZpv5Jojrwm0X9wjIzXVEZm+ykFuQgghhBBC6hIenzU8gew3RUVFkp2dLb+u+lUys5yJiEXkizFy6vCsw5UjVu8EGSOn9jcidvKiyTLyg5GB7ZB3cMODZfGuxaZO1/jB4+XULqdGJSL2p/U/yTGvHVOtTHQO9Yi0/Y2IhfMancSX5r0k9313n2wq2RSQ2SqzpTx14tNKVk2j3ewiYlG/H8++S878+lHbcsLd8r+B18sRPbSObDQiYs+bel619frNhd9ELyLWWyGfTT1Sri4oDCnzjdaN5LyLtkjRvpKoRMQC/RnRXFbBMv97yn/l8l6XRzUi1li3SZKkZC7atchUtzPOnRG1iFhVzl8ekqvnTAzI7JnZUxYUL6jUBX0uk9P73htRtFsoHTFx3kS54fPKARJd98wrmide8QbpgmhExD4952kZ9dkok8zDMg+TX4t/tZUZjYjYj//6WE6dfKpJZo+GPdS9NMo06p/9jYjFAFGkOm9/I2KnL5uuIiXt5OH75DMny+EtD4+oDqvSEZ+v+Fyumn5VtWV89sRn1TMSjYhY6J/5046Sf67driTYyXy/bRMZcvZK2bh7S1QiYqctnRb0nNiV863hb0m/Nv2iEhEbiW6H03V/I2LRnga+NjAwSALdc0jmIeq51OXB8T77ktlyQKMDHImI7dG2h+zcuVOysrKCrpdUb6PGou68Xq9s3rxZmjVrJklJscmGFmuZbigjZSaOPMpMHHmUmVgy3VBGN8gsisDGYkSsg7Rv3N72BqDToTtU7NAdd3agM4+OGCKRjB0u/a/egX7o+4fkil5XmNIUVJXbFOds2Lih7T7r73D+9KT0gDydQ/IOCSoXOndVlVV3tlixOhVCyYTjw+78eufZDnTu8LEDHc2rWrSQKzoky8xtHtmSki652R45uolIMqons2XI88IBhE8obOvBWyHDt02W9/NERm0RKSivLGd+ik+ezBUZXvi+SM5jIpaUE9XVoe4AMqY/wLGI1F5f9HfAKWGsV7Sk/KzWKlLUmuLCCBxA+ISqQ2NZKzZ8JeM2a05YCSHzjg075JxN30pW3nHK2WIHHEBVtSU4gIxcVdJCWlRVr80q60V3LNkBBxA+dsABpF9TZd2uD7TRtKQ003MJxw0iNgEcaPjYEbaO8FbIVXs+NZRTJMWTYi7nns9EGrxY5fMSro7AM25E1z1WrLoAjlF87KhOR/RodlCQTJQjSGbz7qbzVFeHVemIEzueqO6Vfi8hs15SPdM1YD+iC63PCZxZNdERGywR1SF1no0ugdMuUj2r58ENLc+nor1XjVoVUhdUVYd2OuLAogPDKuNBzQ4KWR7oh4h0xKZvpUPadkmuShfU2yayc750aK5NobcjEh1h95zYlRPPm+4styMSHfHz+p/Dkol3K1IFwJawIxId8dwR58sI/yAiSPYk+3WCJu/ZI84LOGGrq8NIdURRinlwjJDKPPQzRTZhUCVXpNnRIW2nOikvXrCciSEvXsSjnG64l5SZODLdUMZ44a295aQjtg4SySIZem62/QFOufyMJrJ+9zabicja9Pn8Bk0C07yjQV6IDllNjwubdR+IzBohyeKTgRlJsjlZpFmFSNKeArVdBkwRaT08evK2zBLZ/bcMbygyrIHIzD0iW1JEcjNFjq6Pji1Cf9Zpx1XhJAgXOFSeOvwc1Xm2utD0708eHuxc2h9mrflWpSMIBdrUunLtuEF5x0VP6c4bVUW9ekTmXS/SaljUlLGq26FPyYh3zwxRtz55cuiTUa3bWLefeOiCAfVF8lNE1pdLaJkp2nHRovJejghyNuvfo30v88q3RPW4/X+PSFTfI4H2oxzc2kCQFeNAUNTYow3qVfmMGI6LBgPy+0p+arKs34ecqSHKmZqsjquzi036BxGnGAaBdPA8Kgf3trdFvONqjcFLErzzA/tt3iiR3QUiyb1Efp8nktFSpNdT0bXb4iXPLfXqlnKyXp0rpxvuJWUmjkw3lNFN+icC6Ih1kuKVIh5D9FNKQ5H6zUUwlRPOESuZ/oiP3etFKsypCSS9mUhqpsjenVK8dYG0r0w9K2VePZ+oz7Qdx0mT1iIN2ookpWgdzXLLAhdpTUTq5Yjs2yVSak5NIIgAa9Ba8HhMyK2Qa/wzAyGnVXKp/IYFbPAYJYtMaFohycUrKh8mnBPnRk49ODGNeJJFGvqjZHatFvFZVh6v31I5VQ6uJ7LHpzkEkvwy1yb7ZFOFCGLTjkgXGSAFIpCrzusRaeiPuClZJ2JYXEerw+YiqQ1F9haKlFny26VkiKQ1E5l7XSCaB3+TfbgPWnSY6j7/cq1I1sFmpZHWVKRetsi+YpFS87RjSU4XyfBHL+rXaQTXqR/qERmY4ZNtSaXSxOtTkW8BdiwQyTBEnyWlijRoE7oOIROyS7eK7Ntp7jxvfVN1nm/ZgugnrV53pPqkRbLInY1FhuqdZ9w3ax3WbyGS0kBk7w6RMvO0Y7Ud+5EDsKQyNUHxnu2qXa70z75tmVwpU5/kvaVCZAM68vuKREq32NchprTuCk5NUNm+N4qU+1MTbJ2jHJSh69VndlDivNYsLRn5Islp2vXguoykZoukN9WeUzyvfoYnb5TpLUX+tVlzTDRPKpP2/rq9q7HIkGRc426tvaH+UI+mOoxQR6Bd6NWkyimyJalccq3tZ+cSrZxYuGhX8LTjcHVE8u4CmZhbIVf7H+l9hjprn6I9gs8ZdQHabHI97bnA82EkTB2RvPN3mdhM5Ootlfonzd9ymiSJ5CSLPJeL4xZpv4GehL60q8MIdMTw/J4y4+hL5b5fXpFN5T5pkqQd2zbVIy8edYkMye9pfqYbthNBpC5e9hXm1ATh6IgBObnSL11kY4VZ50HPliFtQrJIp1SRAeneSrn1GomkNdbumdWRWI2O2FS4KlCH2cmV8vBcFnpFtkLPekSKt8zX3iPh1mEVOiI5pYEaCPrn149K29TKdwlkoszQEWogqHSjzTswVyQ1K3IdYVisq0odi/Zo1dH+d6BWh+HriOStc+SFphVy2gaRdA8ck+ZyVvhEHsdzsm22VpeWhcmkfl7EOmJAo5bSLzNHZhcXKhlWPQvnb2paY83JvXenSJkl53Fyfc04DVdH+HWs0cG9I6VC8rJ86t0cGARa975I27OqqMMa6ogEWKxr2rRpMmvWLOnYsaOsWLFCevbsKSNHVqaBsmP27Nny3nvvSdeuXaWgoEAaNWok118fnNM37sSjI4vBcr/2DIB3pROD6LGW55Z6dUs5Wa/OldMN95IyE0emG8roJv0TIXTEOsmC27AiUOV3OEIOvElk7zYtGs/KIG0hHvlzvEiRebEuOfBGkebHiGz5Xo7a/I48WTmrWhaU+WRaudbhM27HcbLrK5G+b2pOgOUTRbaZpy9Kh0tFWp+uOXSWmBfrUh3Ew59Szqqh9QplVr7I4r2a4zc7da38WiyqgzetpUjPeoUiP10kUk9brEvajBBpf6HIruUiC8yLbKiO1VHaQjyy6J5gp+ghD0py2WaZ1NzvnPM7XyBzilfkmZ0iLVJE3s0TSV46XmSttnCM6iQerS3EI388Ftwh73arSLP+aqqqrDAv1iVNjhBpNkBkT6VTDTIzvWvVXw2fSGmBuZyg05UirU4W2T5X5A/zQjyS1UXkMG2xLtt73v4i09dgmX5Qxo1fmTvqR2oL8cjCO4MdhYc+KpLdVeTvD0X+rlysS7W9PRsCnecdXp/s9ayVeo3gaNJ8LAEHJWQaHMWKg+8SaXqkyMYvRVaaF+KR3H4iB92mOboNZT1qz1bVLoej/47Fl3J80q/BWtmZXjlhFvc0r+UgrXO/1LwQj+QcLHLIOBFfuX0d9pmkOUVXviqyRVusy3gfdWzrVXde4Vm1LMQjvZ7UHJ/rpoisNy/WJfnDRDpepjm4fr2lsn1s/EqGNhBZfYDmmGiTtkGyGxvqdv5NIo17izTtLbLhU5HV5oV4ItYROM5CPdkVXE7Ua+erNOeW3XnD1RELRssQgy74o8wnb/r9cM81E+mZJpKXYtAFvZ/TnIFr3hbZYF6IJ2wdsWG6DGkgMiutUv/8r0xz0l2QJXJLI8g0PCN5J4h0uU4EzjxrWSPREb/fL0O2z5PBrUS2eUU2+rbK6AaIovRK8oaJIj/8KpJuiC7s/47mPFv+osh282Jd4eiI5Aat5L08kbmlZp33c5HIhgqR8zJFbmokkvz3FJHN32gHHXCOyAEjRYr+FPnNvFhXdTqiXdrB6u/pfl2gy8Nz+clukRd3apGNRxW8LFLilwdS6ov09+vcJeMi0xFNj1JRlFPzkLaj8l0CmelJIsVekTMwELTUow0eGOlyrUje4BroCJ9WFxioUWkmbHQsnIEYXLH+Fk7Y3s9HriP2rJdTGooa8Hq6UOTmHHM5O6eKtEn165/VbwU70XvcK9L4sIh0BGZxvNesRFoVa07X6xv55IgMs57NTitXA6uwI2SZebEuaXyoSI//hK8jDDpWHwTakbRbGnu1dDMBVr5S6YiF/rMs1lVjHVFetxfr+uGHH+TBBx9UjlV98b1hw4ap3GVnn3227W9WrlwpF198sSxcuFDS09PVtlGjRsnDDz8st956q9QaYt358c+AsZ8z4R9Ej+YMmFjLc0u9uqWcrFfnyumGe0mZiSPTDWV0k/6pAXTEOskhD4kYFutSkSwADgp04ELR9Qb7iFiQ218adb1KHl40JxA5Veb1SMsGIqU+keu3ap2wvGSRb4+/SiS3rxadBOA4Qqfd6vAAjQ4JviY9J6K/kwhnR7NkkZ9LPbLd00Zebb5YRa4Gpna2OUuk1amVkSygYcfg8yLaTaf7PbYRsXDOHp4u8lmJyH3bRTZVYOGRNvLjrsWBaY/K+dL1JpGm2sI1mqfLz4E320e76R3ZnO7mfXCgwPliAN3J4qQ2Us+72NxpN5ZT1aHf+9348OCyIlJLx+6ep7fUoqr80ZvBMj1afRz5qllRINpNp+cD9hGxIP90zYGvs36ayNYftUvziDRO9si2pDbS2FpG3PNut9tHu4EWx4s0Osy8T29nuPeGsjbyVsjDLx8pFaLliX2u0CM/eduoRWS8/hyx9dIayQBMf64oEWnYwb4OPSn2dai3NTi12/xD+x/Omh8rF64BtvcSDhr9WbWLdgOtR4i0GGzeB6cNQASmfk2QWfCJyTGxNSlPGnu3Vsr0llY6T/OGijQ50lKHEeoIvGi+Gqg5Hf3slYb+rKZ+mXAWoo2oC0u3P2+4OgJtf+uPAV3QwOORFg1spnnrz0i6v720PVuk5cnm84arI3o9J/Jlf8kr3RjQPyMy0+Xy+gaZKKP+jCAiVpW7hc15w9QRuQMCkc4e/3PiTWoq3VI2VJoPGNE96q3K51Jvpx2vtI+IrU5H5A6QvIYtpF7ZRpPO21ah6bxjMrTFj0y6ABGxIKurjf6uWkf02jRTnfejXSLf7IFZpMnDc1nod6Z5fCKNOsERP8y+DiPVETsWKl0HJyWiQvV3SZPkxXJEuq8yihL11PFyy73x52CFvo9UR+yYL/L9P0PrdfymUc/Q78BIdYRf/+gDXrblVHWVpzmu7SJiI9URW+dIXsEngVQBT+7wyOEV2v1skexTEflHpxZpg2y5/bU2Y6rD+pHpCBsdWy4ZZt0D2l9S+f9hjwfXYU11RDEiYi1O6jrEmDFj5Kyzzgo4YcGFF14ot99+e0hH7AMPPCBDhw4NOGH13xx77LFy3XXXSf36EeZnweBEauUCl+reQ6fAWV5mkwJFb5eYaeOztNnUHG2QZm+RyFwsLlo5gO3BAIn/f8Xca0UaH1GpxzAbCf8jAtyL+H8DKZnaLAUMguyrzDUfeN6hF/wpeirxSZIPeskwiA69goFp2MTqvA20CPuKMpG9ltk90PKIOld1hJlilVH1isJFkcsLqsMt2sCRXR1ihlp5cXB3zdSpNMr0b0Onsml/xNxbzpullde2DlO1gWxVVsuA0JbZ4ZVz01fBNjXe4Xq/xa4Oob8QCY8BQn0mE4BNg/ZRXTnRecZ9s9Yh2i/asV0dBtp3hUjZ5sjLiXaGoA3jLDP9PQE7CbrNYIsF0Ns3ZjfAbguSp8/csMiDvY5BcFWH2kCi+bxNtfc8ZjhUWGYIBNr3Xs3mVPVqfC4ryxr0XOKZwkwPzFAo3xWiDsPQEZu/C6rXoL/6c4J+mapDb/DszEh0RMH0EDLF/tkM1GFhsN0Wjo6oie7BuxbvNrz3rTNTwtER236qmf6BfYtZWwh+stpt1emInYtrJhP2CmxyuzqsTkcU1lCm6je3CF2HVemIbXPDk1nwsaYLTHWYrfkSMGMoXB0Rie6B7WudIaW/AyPREZHIxHOJ2UpWH0O9xpHpCBv941E2hM+sf5oPFqmHZ7kkOMAsUIdh6oga6VmbFGU10RF7rO/v0NAR6ySZ7UUybRYVgfGhTzG2Q3ei2VEvW5KTUuTGRiIj/O0F3R4sD4MO0Kp9WgN7pCnyHKaY5ejK3Q68xPCxw/A7dCCPrO+Rzcnp0qzCo6azBoCjxlouGJVVlVVPUWAFjpCMfBki6+X4DJ/M3KMtnHVdhkeOro+OrEfrBKPzZjeSoU8ntQMvQL2DF6KcGh6p8KDDU7n4SMhyArxsdCeQHaHqASH5apTIKtPP4U+LZHcOfd5QdQhgYOtGtn7t4ZQRdVFlHTaqdAJZsbQ73J0bT3xZZvtzpxZUeGR9Rbqs3Fe5iMyUMyZq+TaTsjSlZgfueVVtSX/xggYHiCy8ze9M89mU099+0M6APtXaDrzk9BedFbxw9GuyRpLi3eNJC65b/UWKKeX42J43Ah2BiLJA+xHx4cVsbD+9n628lzDCqqzDanSEof1AF/RRusCfR9l4rPUZgbGlG1xWqtMRWR0CZazUP0l+mZ7KMlqfkerqsKr2jTQHpg6VR7weg1MOlG7QIuStuXcxzSYUVekItP/ez8mQWSNC6zy7cgIYfxHq2eTd6+SpXO09gohfvEcaWZ7LR9Afa3JY6HNHqiMMz0iV7xIYzqFkptZAR2DbgOTAlKiALoAOgINPH4Wvsg4j0BEG/ZPs8dmU06B/qhqJj0RH+Ou2MlWAf7HJQPuRSkMTbRbRrXaEqyOCdCx0T3Kwjm19Zph1GKGO8NXdxbr27NkjM2fOVM5TI+3atZO//vpLRb62bx9cV59++qmMHj066DdYmffHH39UDlk7ysrK1Me4oi/wLX9FfA3xjtLwwZmGZ6GsUDx/WSKmsb+7P+p+3QfiMaTkUftanyGS00Nk9ZvisXRm0nw7xaveEFpEukozgSh9tCFsxaAYOjQFM8RT9Jf5vIiCb3qUSPFy8aydYt6Hd37HK0R2Q555AKC+b0tAZkAuos93/Kb9FjN4MFhUsl48q14znxf6BYOdYNWb4rF0CH1qRpShPH55wKsNYWn7DPICzwcGXsDaKeJRHWfDeREBnn2QGrDybPjcvA8dYQz+Gcqpy9RLqJ7FP8eLxziAhH0tT9ScBkVLxbNuqnkfbIkOl6n/g+75zsX+ofJKGyZIJj47fhfP5h/M54Xe6nytP5T7VfFYUh75MECD98fmH8SDQR2dktXiU+1Hv3chyokcgzt/F48lTY0PfQLMMtk2Tzybvjbvyz5QGyTeV2wuK5xMhvL4LDID+9DOkpeIBx1343mRtgWBAN5y++cGbQltquAz8ez8IyBPPy/aaZJK9GZ2o/gwm63VadqXFa+IB519434MVkIfb54pHjiQjPvgtMkboq7Zg1kJJasDTgZdptZ6DYs5+p9L30F3imR2FNn6i3jgTDWeNxIdseEz0z5dJv56jIMFq98SH5xi7c5XDg3b84arI/DMGff5y2jSP36ZeDZ9nf6tvXc2fSsey0ymsHRETXQPZp/gvpZuE49lZkpYOiKETK2cHluZ6rfdbtOcZ39/LB7LbLBqdQSc3eq+VTpLw9J5zQb607+tEc/q/0WmI9Jya6ZnUUaUFax5JzIdAWdbCJkmnbd+hni2zTf/FsEnmMlUGIGOiET3FK8SD2YOGc8Lu7PTVZHpCItM1GVImV6vmpXlsaQZ8x1wbmQ6wqR/ktTzkebTHP6BVrynQHxr39YG73csEk/BDPN5YT9GoiNs9GyySvRm0bPrP67Us8smiMfidK6JjvDtsgwW1UVHrFO5s/744w958cUX1TE7duyQvXv3yl133SUpKZVVsWHDBnnooYekU6dOUlpaKps2bZJ77rlHGjTwR4TEm/p5qrNV5SIZDatxqkSC3ylq7HCZsTi1ogE6p34HJRwQiC6sdPj4e5ToQEcznDwe5QRQWAjJ1/Om6FidBHW4jMMPHC5TznpfRs0YJQXFlWXEwj1PDn1K7Y8qhvZjckoqHGo/4T5v0XouXdR+YlrGSBZuiuICT8ZyJs8bJQM9BZU6D1PnHbiXw5vlyxT5O/R7pFnr6N7LeD0jAHWHKCp9kYDmDi4SEGf9o0fk2w6SRKtu41HGBAGO1vLy8iCbsmFDbTB86dKlQY7YkpISZddW9ZtQjthx48bJvffeG7R9a/apUpZZOQDvS0oT3+bNqrOYlBOsa7zYh7ub1k889cxRRt49WSJ7N4unpKF4knpWbhePFCV1kN2+ppLkQ1fIH0lbr69IjjabybutSMRTIp6Uw8SDNCMGfHsbatdU0TDomuC0UPvKmkpSUg+TzOKkdtLAu06SPB4VkascCI3+IZJ1oPZbb4a/rMnBZfUkBcqa1HCwKc+0On/J3yq/HTpscCjp8jK9qzT3CAZDUVaDvKA6TB8gnjRzh8+7u6GK1PSUtxCPtaxb54kPOfV86MbuM8mEe8srSLrtEY+3o3gwo8BUh5n+Osy2qcMUbR/Kaq2HpAPFW7BWO6+vXDnsjDJ9SIiiBl86S1JOvqUOkyvrMPOk4Dos9oiUbBaPr6N4cgyDl/vmiC9pUaAOEd1rlKkNiqYqHe5pNEg86ZY6LKmvIrg85fnBdai3b1+FuaxJB4oUrAjUoc9XLruSDjDIRJtCpBVyvTcOrsOkVP95ffbPzfYSEU+peJIPEU/OgQF56reSLBWeFCnytFMyjAOSvoYnVd6bzFOCbC7vTuSL3ywe6SKeHH8+eP23Pr19e7Rr2jdHJGmhfnOk3FNPdiZ1VFFpcIsEqNdXvCVpIns2i6eiTeg6DEdHNILzuTLvermkKpmo/2SVqMxPo3+Ir14Pfx167c8bro7AM2eQCY1TmNRR1VyKz+Ac8T+b3sJ9IkmowwPFk9POfN5wdITSPdB3vhC6R9MRJt0j6f7z7qu6DkPqiKbiSTo04MzWZTb0rhEPnke/jjDKVMdt3aGu21Ovt3hyDolMR/hzemqRk5Uy8YwoV5KuZy0yfRUN/GVNs6nDanREyfoa6llPZR3Wj1BHFK8QX/KP1evZBieIB45I43nLMkVUHUagI4J0T4XsSmpr0j1Kz0L3lNQP/Q6MREf4Zer62+vzSUlSa5NMVYeQuXmzJGUcJ1LfWocR6giD/kFQC+p1lydfSr05Jp3nLU5XMj0VzWzOmxqZjrDVswdIhaSY9WyDIZV1mD0s+Lw10BHFyYgStqT7rEuOWKdyZxUWFspJJ50kv/zyizRtqkUJjh8/Xq699lp54YUX1Pd9+/bJ4MGD5e2335aDDjpIbZs6daqMGDFCZswwe+fjht8ZMlzWy7AGPvsV4aPpDIlXhyvWzpd4dixj5SSIYxnhbB3WZZjMXDNTtmzaIrnNc+XotkdHdeX5uLafeDkpXdJ+YupIc4PD0H8vh88aEfo9kiiDXTooCyI0ZLNIM0xjMrkoo4sb9E+sy5ggIAgAGAMAjN/1/fv7Gx2kO7jxxhtNEbGtW7eWJvkHSVZWiOhyNc8qFCEilxWtRf5YZI6C89ST3Ir5ZodPfmeRZt0jOG8VNB0k8ueOQNsPyPQu8Mv0t/0Dzwyhz6qI7Le7Jm83kb+uCpLX1Ls4THk1KGvadpGl8yovIUimn1btbeo1XJoFl3PFrdWXs/Pgat4TzcLfh3L+tbD6cqr3YjepOXlVlhPTsYPK2XFQGO9Df0qLqspqIw/+s+D2c7pBXgR1GES+v17NzyUstqbeRTbPZeswz1uNjmjZObicniTJ9S6s5jlpUfV5q6J5vk2bTTXon1Ayqytr6yp0z/b90D1VzIANdU0o459bbWT+FqbMGuhZb2eRPzftp86riZ79d2z1LGQuv6F6mV1P2w/buHk1uielhronTB1hI3OLJ6kKmfuje/w6wk7/mHSen7xWmm1eLS1qoZ6tbN/1/LOO6qwj1qncWc8884z06NEj4IQFF1xwgTRv3lzuvPNOyc/PVw5YOHx1Jyw47bTT5JJLLlFTv4466iiJO/GIFo1XhyuWzpd4dyxj5SSIYxnhdB3YdqBsrr9ZmjVrpp41R0n0KDiXtZ+YldEtDsNYRuDWhmck1rhB/8T6HZ0A6Latz5IvV/9u3V7T3+ikpaWpjxW8f6P+Dsa9R3oWg+70BCYjGjo/qo1ESTbO02u8IUWP1yDTn4Ou1xMiKal1U55b6tUt5WS9OldON9xLykwcmW4oo5v0j59I7CqHvSA1z51lnZZlzJ1lB3Jn2f1Gz50V6pgmTZqoqV6ff/55yGOSk5OlTZs2tSci1ugMseaTRUOO9spzRpmnrRY59kuRrjdrf09b5XzUi+6UaH609tfpDl68yhlL3FDGeLSfeDyX8SDR24/u1FIkuMMw1vfSLc+Im/RPrN/RdZzsbC0/L1JjGdHzuOr79/c3rtKdsW77sZbnlnp1SzlZr872VRP5XlJmYsl0QxndpH8iJMVNubPgyD3mGMMK8objcAzAMV26dKnymHAXQvB6verjGK1OF8k7VbxbZolv01bxNm9aufiHY3I94m06QHxIRt4UibQ9DsqqBPWIiA9H69N15XRDGeMgMy7PpQbbT5TvY/8pIvNvEO/ugsoFH/BCP+wJbb+D15DQ99I1z0gcZMapbmNdr7G8f9EGNiwG+HVbUQeBAwDrE9jZoHl5eRH9Jm64aQaVG2ZssZyJI88N9RoPmW4oI2Wy/eyvPLfon7rsiHUydxb+Wo/Rj4vkmHAXQtiyZYta7MtpvL6usjNtp/h82ZK0dZvz8rxeZfyj0+X41HLKTCh5rpIZ4+dSyWT7iS5YUOaIH8W7c7HsLCwSX06WJGUjCXySlpTfQVxxL13wjMRNZoLbBcXFxVJXycjIkP79+8vy5ctN25ctW6ZmX3Xu3Nn2d1i/wO43OF+/fv2kVhGvzk8s80DHQ55b6tUt5WS9Jo5MN5SRMhNHXjxkukn/1FVHrJO5s3Cc3e+xLZJjwl0IITc3t4qFEKLbAcJ1Q16sOuyxlEeZiSOPMhNLphvKqGQ2ayaeLVsSupyuuZeUmRDyjOsB1EXGjh0rN998s9xyyy2Bwf/JkyfLfffdp+pxyZIlcs4558gTTzwhxx13nNp/2223ySmnnKKc0JmZmYHfYLs+A6xWUYs7P3Uat9SrW8oZa1ivhJB4Qf1Tux2xTubOwl/rMfpx4RyDxYXivhBCCGC4J7I8ykwceZSZWDLdUEa3yHRDGSkzMeTFsh6dAGmysDAtHLFIh4W0XGeeeaZaQFZPubVmzRrZtWtX4Dddu3aVV199VTleu3fvLhs2bJC2bdvK6NGj41gSQgghhBBS5x2xTubOwnQv6zH6ccZj9N9Zj0GeWUIIIYQQQvaHYcOGqY8dvXv3lsLCwqDtSGmADyGEEEIIqbskuSl3lt0x69atU9Guxx9/fMhjECGLyIQTTjghKmUkhBBCCCGEEEIIIYS4i1rniNVzZ02ZMkXKy8sD26y5s3r27ClfffVVYD+mauG7cQEHa+6sq6++WpYuXSp///236ZhLLrlEOnTooL6fffbZKiJ37ty5gWM+/PBD6du3LyNiCSGEEEIIIYQQQgghiZGawMncWVhEYvr06fLAAw+oYzDtC+d44YUXTAtAfP755zJu3DiZPXu2ioZF1OzUqVNjXAuEEEIIIYQQQgghhJBEoVY6Yp3MndWtWzeT49WO/Px8ee655yK8YkIIIYQQQgghhBBCCKlDqQkIIYQQQgghhBBCCCEkkaAjlhBCCCGEEEIIIYQQQhyGjlhCCCGEEEIIIYQQQghxGDpiCSGEEEIIIYQQQgghxGHoiCWEEEIIIYQQQgghhBCHoSOWEEIIIYQQQgghhBBCHCbFaQFuxOfzqb9FRUUxkef1eqW4uFjS09MlKSkp4eRRZuLIo8zEkumGMrpFphvKSJmJI0+3r3R7i9ROG5VtnzIps3bJo8zEkUeZiSXTDWV0g8yiCOxTOmIdADcatG7dOt6XQgghhBCSsPZWdnZ2vC+jTkEblRBCCCEkvvapx8dwAke87gUFBZKZmSkej8dxefC8w6Bet26dZGVlJZw8ykwceZSZWDLdUEa3yHRDGSkzceTBdIWR27Jly5hFVCQKsbRR2fYpkzJrlzzKTBx5lJlYMt1QRjfI9EVgnzIi1gFQ6fn5+TGXi4YVqwYdD3mUmTjyKDOxZLqhjG6R6YYyUmZiyGMkbN2xUdn2KZMya5c8ykwceZSZWDLdUMZEl5kdpn3KMAJCCCGEEEIIIYQQQghxGDpiCSGEEEIIIYQQQgghxGHoiE0A0tLSZOzYsepvIsqjzMSRR5mJJdMNZXSLTDeUkTITRx6pG7DtUyZl1i55lJk48igzsWS6oYxukhkOXKyLEEIIIYQQQgghhBBCHIYRsYQQQgghhBBCCCGEEOIwdMQSQgghhBBCCCGEEEKIw9ARSwghhBBCCCGEEEIIIQ6T4rQAQkjtpaysTIqLi2XXrl2Snp4umZmZkpGRIR6PRxKJbdu2qbIiJbYxLXaDBg2kUaNGcb02QojIvn37lC7Cp169egFdlJSUOOPFhYWFsnv37iA9hMUDcnNz43pthBBSm6B9SvuUkNqAG+xTQBs19nCxrjrOtGnTZNasWdKxY0dZsWKF9OzZU0aOHOmozE2bNsmtt94qgwcPdlwW2Lt3rzz33HNKAf7999+qnLp8pxTuBx98IFu2bFGyf/rpJxk4cKBcddVVEiv++usvueuuu+Tdd991TAbqsnXr1oHveKGcccYZ8sILLzimcKFucP5Vq1ZJq1atxOv1yoknnigHHnigOAXayiOPPGK779FHH5Wbb7456jI/+eQTWbZsmeowbN++XdXzZZddJk7y+uuvy+zZs6Vz587qGTn11FNl6NChMXv2Ifu9996Trl27SkFBgepAXH/99Y7KBEVFRfLAAw9Idna23HHHHY7JQ9t95ZVXZN26dbJ582b5888/5V//+pecc845jskEH374oapPdNQWLFggnTp1kttuu01SUlJiose3bt0qZ599tnz55Zf7Ja86mampqVJeXh74fuyxx8qECROkffv2jskE77zzjmq7BxxwgHpe+/Tpoz7Rlge9F+odcvXVV8uzzz4bdZng+++/l19++UWSk5PVswKHxo033rjfHYiqZE6fPl3ef/996datm6xfv14OOeQQueCCC/ZLHql7xMM+jbWNGmv7tDbYqIlqn8bDRqV9Gj3cYJ+6xUalfeqMfRoPG5X2adUwIrYO88MPP8iDDz6oHlJ9hHjYsGGqAUMxRRsoWCgFvMBee+01GTRokMQCGCMXXnih5Ofnq+9ffPGFerjeeuutqLxgrNx9992yePFiZehi5AvGbl5enjJ4o/Hiro6Kigq56KKLlGwnwUvl4Ycfll69eiljs0ePHtK8eXNHZcIo6NChg7qn4Mwzz1Ttd8qUKY7J3LNnj1K6xvpER+all16SUaNGRV3ejBkzlAFibCt4wU2cONExY/fpp5+W//3vf6ou8UJD+fByycrKkr59+zr+7K9cuVIuvvhiWbhwoXqRAtQt2hdehk7IXLNmjfz3v/+V+vXry6RJk/a7E1qdPNzDo48+Wi699FL1/ffff5fDDjtMXQeMTidkvvjii/LGG28oQxedz9LSUmnbtq0yPp988klHZFpBvS5fvrxGsiKRCTnDhw9XzysMpDZt2jgu8/7771edFrQjAAMQ75Wff/456vLgWIDjAu3VyFNPPaU6ajWhOpnYjw73DTfcYNJPY8aMUWV3QuZHH32kdB/eoYjo0jst0AtnnXVWjWSSukes7dN42aixtk/jbaMmsn0aDxuV9int02jJTAQblfapM/ZpPGxU2qdhgohYUjc59thjfU888YRp2/vvv+/r3Lmz47LRdCZNmuS4nNLSUl/jxo19Dz30kGn7EUcc4evSpYsjMkeNGuVr06aNb9euXYFtzZs395166qm+WPDMM8/4Lr30Ut/AgQMdlbNq1aqY3EOdN998U7VNr9cb2DZx4kTfBx984KjcRx99NGjbfffd51u6dKkj8s466yzfhg0bTNuKiop8p512miPyiouLfRkZGb5x48aZtt90002+IUOGxOTZv+SSS3zXXXedadu8efN82dnZvt27dzsi00jbtm19Y8eO3W85VclD27322muD7nVmZqZv7969jsh8/PHHfU2bNvWtXr06sO3II4/0de/efb/lhZJp5O2331b6EPUbLULJjOb9C0fmrFmzfDk5Ob6SkpLAtqlTp/omTJjgiDw7PQRZ33333X7LCyVz9OjRvh9//DHo2EGDBjkiE7odbeWKK64Ieqc59b4mtZN42qexslHjYZ/G20ZNVPs0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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Создание двух графиков рядом\n", + "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))\n", + "\n", + "# ============= Левый график: случайные данные =============\n", + "ax1.set_title(\"Вставка случайных данных\")\n", + "ax1.set_ylabel('Время, с')\n", + "ax1.set_xlabel('Повторения')\n", + "ax1.set_xticks(iterations)\n", + "\n", + "# Связный список\n", + "ax1.scatter(iterations, ll_random_insert, label='связный список', color=ll_col)\n", + "ax1.axhline(y=ll_random_insert_average, color=ll_col, linewidth=1, \n", + " linestyle='--', alpha=0.7)\n", + "\n", + "# Хеш таблица\n", + "\n", + "ax1.scatter(iterations, ht_random_insert, label='хеш таблица', color=ht_col)\n", + "ax1.axhline(y=ht_random_insert_average, color=ht_col, linewidth=1, \n", + " linestyle='--', alpha=0.7)\n", + "\n", + "# Дерево\n", + "\n", + "ax1.scatter(iterations, bst_random_insert, label='дерево', color=bst_col)\n", + "ax1.axhline(y=bst_random_insert_average, color=bst_col, linewidth=1, \n", + " linestyle='--', alpha=0.7)\n", + "\n", + "ax1.legend(loc='best')\n", + "ax1.grid(True, alpha=0.3)\n", + "\n", + "# ============= Правый график: отсортированные данные =============\n", + "ax2.set_title(\"Вставка отсортированных данных\")\n", + "ax2.set_ylabel('Время, с')\n", + "ax2.set_xlabel('Повторения')\n", + "ax2.set_xticks(iterations)\n", + "# ax2.set_xticklabels(range(1, 6))\n", + "\n", + "# Связный список\n", + "ax2.scatter(iterations, ll_sorted_insert, label='связный список', color=ll_col)\n", + "ax2.axhline(y=ll_sorted_insert_average, color=ll_col, linewidth=1, \n", + " linestyle='--', alpha=0.5)\n", + "\n", + "# Хеш таблица\n", + "ax2.scatter(iterations, ht_sorted_insert, label='хеш таблица', color=ht_col)\n", + "ax2.axhline(y=ht_sorted_insert_average, color=ht_col, linewidth=1, \n", + " linestyle='--', alpha=0.5)\n", + "\n", + "# Дерево\n", + "ax2.scatter(iterations, bst_sorted_insert, label='дерево', color=bst_col)\n", + "ax2.axhline(y=bst_sorted_insert_average, color=bst_col, linewidth=1, \n", + " linestyle='--', alpha=0.5)\n", + "\n", + "ax2.legend(loc='best')\n", + "ax2.grid(True, alpha=0.3)\n", + "\n", + "# Общая настройка\n", + "plt.suptitle(f'Сравнение производительности вставки в структуры данных (N = {countUsers})', \n", + " fontsize=14)\n", + "plt.tight_layout()\n", + "plt.savefig('../img/insert.pdf',\n", + " format='pdf',\n", + " dpi=300,\n", + " bbox_inches='tight', \n", + " pad_inches=0.1)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "7de42c9d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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V0/9aDllbWm63v/qq68iy+jzUtab5tFnOnz4cDcgjUf7SFlP2q6BAwe6/aCL9SuuuMJN03uPPvpoZH59PlqfjolRo0a5OnuD+2hZfT5a7phjjrHHHnvMTdfxq2NZn6WCPuqTOdHvTCL74rDDDnP7QftS3YtoXYl2L1JYfSZMmOD6WtRnqONPx6seD1Y5gwcPdgP9KVtM3yV93nqtY+uaa65xWWvqZ1L7cdOmTZHvtgbOUXabfjTQjv/41PdR33ENouQ/XvS98x4N1iPEmqabRtom0TGpz0n11v7V+wqeKOtR69h3332LVbbeO+igg9xxqWxCHfuqjx6t1nd01apVUftQx7GW0WBI2heqt84xHu0jrUPr07Y98MADbroeFa9SpYrL7tM+1pMLRZkxY4ZdcMEF7njXeUOfuz7/2GM/kWPLf+z//e9/t48++sgFoi666KKoY7845+TYc4K2MTaAqn168sknu+V0c1DL6bhRvTRNQUNlaorqoGn62/XQQw8ldEzr3Onv97QgOg9pECh9T71jPpNo4C3x+nr303nee1+/C5rHv55E50sHnc90LOp40t9a/S33n+eLsy8Smc9P53IdUwAAFEh9xAIA4HfggQcqKhP69ttvi7Xctm3bQnvuuWfo0EMPDf3yyy+R6S+//HKocuXKoQ8//DAy7a677gq1bds2tGPHDvd66dKloSpVqoRmzJgRtc7HHnvMbUteXl5k2qhRo0L16tULbdy4MTLt3HPPdevze+utt9yyCxcujEx7/vnnQ+3bt3fb6hk4cGDovPPOi7yeNm2aW+7777+PWl+DBg1C119/fdQ0vW7cuHHUtNdff90tr/V4Pvjgg9BBBx0UWr9+fWTaPffcEzruuONCiVD9OnToEDWtS5cuof/7v/8r0f6/7LLLQkOGDIm83rlzZ+jwww8PTZw4MTLt0UcfDZ1++umh3r1759ueJ554ItSkSRP3+XhWrVoVatasWeiLL76ITPv8889DderUCa1evToyrVGjRqFrr702an16rel++ty0H995553ItM2bN7tytT8SpfWOHDkyatqIESPylXfnnXeGzjzzTLcvPC+99FLoyCOPdOUWdkzqu6Jp/v2hz/rggw8O3XLLLZFpL7zwgvsslixZ4l6rrNjlVN/TTjsttHLlyqjtS/Q7U9S+UN09a9eudcfM3XffXeSyRdVn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a/9s3rzZ1emUU06xQYMG2TXXXGPjxo1z9fJ766237NJLL3XBzGuvvdaVq+Xq1avntkX7QH2wavAM1aVcuXJuuv69bNkytw7V+8QTT4xs+4wZM+yDDz6wAQMGuMcJK1So4Lbh/ffftx9++MFtiwbd0Px/+ctf7Omnn45sz6JFi+zBBx+00aNHu89U633ooYeittn/uWp7Jk2aZEcffbTrH+64445zr8uWLRv1uWqaBvBQmXvuuadb97fffmuzZ892n2/FihXdj7o6UF9zem/YsGFuv2gZLat1xPr444/dMt7yWpeW1z645JJL3DQt3759+8hxMHToUDdtr732cvt++fLlCX2mqocCzy1atHDHhT4r/RxzzDFufdoHqq9/P6m/3Ntvv90dk6effroNGTLETffzH8sNGzZ0Zeizff311+3vf/975FjW/vjmm28i+0yfq97T907zahmV06hRo6jPNvZ7qO3V5xtr5cqVUctrn2t5Hfsq2zsmmzRpYt99951b5t///rd7LHX33Xd33xNtGwAAQluxcBs3bnTbofK17arDVVddZb/99ltknvfee8+1tXr37u2232tLtWzZ0u0PdQ+lOug9vyeffNLVXe0c7Xft0w8//DBqHtX5rrvucvtQ5auNctlll9mPP/4YmefXX3917Zt99tnH9thjD/f3X+0obWv//v2tc+fO9tJLL0Wtt1OnTta8eXM3nz73Bg0auG2+6KKLXDlqK3rBJ3/70GvrfP/9967e6upK7Ul/+1DtIA0ep3EI1C7RvJpPP3/9619du3X69Olx97fahueee64bjE77Xduvtquf2j09e/Z026Pt1uerz1nb3rVr17jrfuGFF+yee+5x8/bt29d9VmpP+/nbdGq/aXvVZopt7+pY+M9//pOvTad66XiWMWPGRNqeOg5vueWWfMe7lvPak7F0LHjL67fqJzqeDj/8cDddT7d5n6sG7fOuG7QdOrYSpWsY7ee9997bHaMqS/XVMa39oONX1ywe/fsf//iHq5OuY0466SR79913o9YZu8/OOussdxzpXKIydK7QdPVZ/cADD+TbZwcccIA7DjW///jTMaV9rvOK//Pyri/itXH12au97e1zb3ntI7X7NV0/+g7Kzp07I9uhpwf1GQFxabAuANlHX++ivuIdO3Z087z77rv53uvbt2+of//+oR07dkSmLV68OLTffvuF3n777ah5H374Ybeet956K2r6c88956Y/8sgjUdO//fbb0F577RUaN25cZNpPP/0Uql+/fujSSy+NTJs/f75bXuv3GzhwYOjcc88N/frrr6HiePPNN936Hnvssci0nTt3ho499tjQPvvsE/r9998TWs+mTZtCxxxzTKhXr16hbdu2Re3Pgw46KO4yw4cPj3r917/+1dU31gUXXBAqV65c6LfffouavnTpUlemttfv6KOPdtPjlae6bt++PTJNn2XDhg1d2Z4VK1a4z+Lqq6/Ot46CPtcnnngi7ueqfaHpvXv3zrcu7eO2bdvmm655tYx/P8aj5Y888sh805955hm3/H333ReZ9vXXX4cOOOCA0C+//BIqiYceeij0/fffR17reFEZOn78zj777NC+++4b2rp1q3utfX3CCSe4bfV/b/zH8jXXXJOvPB0H/s/EX+d4x4jWEfvZ+j+v2O0saPnY4/27774LVa1aNdSzZ8/ItLy8vND+++8fmjlzZqHrBABkHtqKwbUV16xZEzr00ENDjz/+eNT0V199NdSsWTNXF9F+veiiiyLvL1y40JV/7bXXRqY9++yzoZEjR0ZeDxgwIF8757rrrgtVrlw5sl61TdQmGTFiRFT5n3zySahJkyahL7/8Mmr6sGHDXLn6TNevXx+Z/uGHH4YqVaoUuvnmmyPTjjvuuEg5ov3sb5eo7XDggQfmax/GtnU2b94cqlmzZr72ofb3X/7yl1CFChVCgwcPjrSz5OWXXw6VL1/etUX9Hn300VDr1q1Dq1evjkzTZ9WpU6fQmDFjoub1tkfbHbsPKlasGPr8888j0x588MFQlSpVQl988UVk2g033BCqVatW1D7w6PjUsRKvvdugQYMC22Q6juMdh7Hfl8Lak/GW/89//pPvGkbHpbbFv1///Oc/R33Xiuuqq66Ket2oUaN8+0Htc+1f7VOPjn99nvpeJHqN4J1L/G11f51jzwXe5+3/ThX1ecVbfujQofneu/DCC917qptH1yRnnXVWkdc2yG1kxALIRxmSuoOou7+6o+nR3XLdyVVmgv9uvjfIgzegg+h97y6lf7ra/boz2bRpU3cn1KM7iMoc8PPW6/3Oy8tzdxz3339/mzhxotWqVatY9fLWo7vvHv1bd96VSRp7d7sgutM+Z84cl5XhH+Bi7dq1BS6ju61+2ifxBsfQ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m78MDYogaph71HhStqTX2FWDw3ucxltWDdyiPlf/63jdImhavPp60/yfo7I5dCyo7t5FgubzHwcePbalPq68/av+tTSSsC5Q1CgqDgXP1V+uGqV+3rb566WGZOy+1DbqAkifXUH7srj7pqD5/ev0z+/fXu/fCqSrce5l8cT7Xnl92umiVQOyeRTY1p1+BbaL2x0HAKD0oq0YbFtRTxJpXXfccUe+x6oXL17s6hfvUXBvPxf0mSgZQAFuZT5qPR5l7qlLIW/fKENSAS89JeW/Ma02k9pIerQ73sCkCpT7+7tXUEl1UfCzoIzYorbZ26d6fFvdORWnPayb7V5XFaJuA5TBqe6r1DWXKHtRbb5rrrkm6saAsq+HDh3q+qE988wz821PLD2er+Cr9q/aTRr4TFnW6kPVvw/VzjzqqKMiQWL/51hY262wdnDsMsVp64mOd9108J5eK6itp2SRk046yXWt5fUzrECi2rX6bIrzRJk+Fx2HykCPpe2LrZOuQ/Sd9AfX3333XatSpYrrL1bbHLsvS7JvEp3fmxa7L3U9oGNBXXvphk5B+1LrVd3VZ7GSQUTHha6bdB1Y1JgOyHEhAFnjyy+/DHXv3j3UsmVLtRbcj/6taZ988ombZ+fOnaEzzjgjdOyxx0bmqVu3buiUU04JPfHEE5F1ab77778/1KNHj9Dll18eOv/880Nnn3126LPPPovMs2HDhtDw4cMj5XXp0iU0ZswY997o0aNDRxxxRGQbNN+6desiy/7www+hvn37ho4//vjQJZdcEhowYEBoypQpkffHjRsXOuGEE9zyzZo1C1199dWR5fVvb9vbt28fevXVV4vcN9dee22odevWbpl27dq511dddVXopJNOCrVt2zb073//u1j7euPGjaHrrrvOlf+3v/0tdMUVV4TuuOOO0I4dO9z7b731Vui4445z7z3zzDOR5ebMmePmrV69utuW8847L/Tyyy/HLeOxxx4LTZo0qVjbtXDhwtCVV14Z2nvvvd369fmNHz/evbd9+3b3uRx11FGhwYMHh0aOHOleb926NXTZZZeFDj744NAtt9yS73Pt3Llz5HO98cYbI/vR/7nq2FFZml6tWrXQoEGDQl999VVoxowZ7vMtX758aLfddnPlvP/+++5Y1WeuebXMRRdd5D6TSy+9NNShQ4fQwIEDQ7/88kto5syZ7j0tW65cudAFF1wQevfdd0PPPfdcqGPHjm7ZypUru/k8J598sptepkyZ0F/+8pcC969n1qxZ7nOqVKlSqFevXm47/D9efQ899NDQkCFDQitXrnTLTZ482R07Wlb7Uvvi559/Dj311FOhxo0bu3pr3/iP5fr167t1/Pjjj+6Y03dA0/fcc0/3mej40D7TflKd9V6/fv3cvFpGx2zsZ6vPS+ts3ry5m65jWtutz0Df6549e4a++OKL0PLly10Z9erVc/PpvUcffTT0+eefu3rrM9L0e+65J7Jvbr/99qjv2l133VWs4xEAULrQVkxdW3Ht2rWhoUOHhv7617+6/aPfaufo73GsN954w83rlV+7dm33d9z/N9nv8ccfd/XSOjWf6rt69eqoebZs2eLadfobr/K1L9WmWLBgQb71qT2hctUG0br0WVx44YWh008/PTR79ux886vtqHaw2mUVK1Z0y3br1s3tM7UrPP724V577RW65pprQt9++23ozTffdNui6f72oUftKr33zTffuHattqd///7u+Jo7d27cfaJ1qs1z8cUXu+NF2/7CCy/k22+arnU3atTIba/W3bt3b9fO87flRe2nU089NXTmmWeGrr/+ejev2pz6Hu27775u/6u+OjbUpvfqo/K1L9UW1udTtWrVqHa/2nT6vBs0aBD5XowdO9aVOWLEiMhxcOSRR7pyRW0wtck1/cADD3TbrvaftkFt55deesnNd8MNN0SWb9WqVWjYsGHue6H2aq1atdx0fd89umbx2uP77befW6f/exiPPh99d9UmjW0363tatmxZ167U8eFdB61atcodU506dXLHgeql40PnCH3fdN30/PPPu32m9qp3raRzkTef6qLvuqbrvHD33XdHtkf7StPVHtZ8ml/LeZ+39rX2+ZIlS9xn0KdPn8h1i+bXNml7dZ2k9eoYf/LJJyPL6xyoz1LLjxo1KnJO22effUK//fab2w59rl57XJ+5vu9q2wOxyuh/6Q4GAwDy091qDbLk9eWKP3h3r0s6sICfHsfSwCF6lFF3teONHKv+xZT9qsyfp556KqG+sDKFmgHan/FGYAYAANlPmbrqCktZtv5Bo9JFbTP1J0uoInmUwZqMtp7Wo2xqPZWmrFFvnAQ/dQehJ+7Utta4CsowzSbaB7oGSWW3bcgudE0AAKXAjz/+6Eb5VWNF1BDWo/kEYeNT4ycZQVjvMS01FNWPb7wgrKiR2a1bNzd6ary+gTOZGpEEYQEAALJXstp66nrLGxw3XhBW1J7W4GbqIqOgtnWm70uCsNgVBGIBoBRQf0Tq2+v777932Ynqo+vyyy9P92blBN21T3QwtWOPPTbrArEAACC3FdXPa65vD/6gdnCiT4YpWKmALIBoBGIBoBRQx/kawEIDAqjje3Wc7412j2BpZONEqTGpTGUAAIBMp0G+lN2orgBE/1Y3TOny3XffucfdNTiYHHPMMZFtQ+mggczatWuX8PydOnUKdHuATEQfsQAAAAAAAAAQMDJiAQAAAAAAACBgBGIBAAAAAAAAIGDZN4RdKaCBdpYtW2ZVq1ZlND0AAIASUg9aGzZssPr161vZsuQPJBttVgAAgNS2WQnEBkAN2kaNGqV7MwAAALLCjz/+aA0bNkz3ZmQd2qwAAACpbbMSiA2Asgq8DyDoUc+VybBq1SqrU6dOyjJFUl1mLtQxHWVSx+wokzpSZqaUl44yqWPml7l+/XoXKPTaVkgu2qyZXV6ulEkds6NM6kiZmVJeOsqkjrnVZiUQGwDv0S41aFPRqN2yZYsrJ5UHcyrLzIU6pqNM6pgdZVJHysyU8tJRJnXMnjJ5bD4YtFkzu7xcKZM6ZkeZ1JEyM6W8dJRJHXOrzUpnWwAAAAAAAAAQMAKxAAAAAAAAABAwArEAAAAAAAAAEDACsQAAAAAAAAAQMAKxAAAAAAAAABAwArEAAAAAAAAAEDACsQAAAAAAAAAQMAKxAAAAAAAAABAwArEAAAAAAAAAEDACsQAAAAAAAAAQMAKxAAAAAAAAABAwArEAAAAAAAAAELDyQReQibZv324bNmxwPxUqVLCqVata5cqVrWxZ4tYAAGSCnTvNpk83W7XKrE4dsw4dzMqVS/dWAchWO/N22vQl023VilVWZ3Md69Ckg5Ury0kHAABkSCD2lVdesRkzZljTpk1t4cKF1qpVK+vdu3ehy8yaNcteeOEFa9mypS1btsxq1KhhgwYNiprnxRdftDlz5tjatWvt22+/te7du9sll1wSFWRV0HXHjh2R1126dLFHHnnE9ttvvwBqCgAAkmnKFLOBA82WLTNr3drs00/N6tc3GzfO7Mwz0711ALLNlG+n2MCpA23Z+mXWulpr+3T9p1a/Wn0b122cnXkAJx0AAFDKA7EzZ8600aNHu8BqmTJl3DQFTBUsPfvss+Mus2jRIuvfv78Lsu6+++5u2sCBA+22226zq6++OhKErV69ut14443utYK1hx56qH399df24IMPRtalwOyZZ55pmzdvtgMPPNAaN26cgloDAIBkBGF79jQLhcz8D7L8/HN4+uTJBGMBJDcI2/P5nhaykJX19fr28/qf3fTJvSYTjAUAABGl8ln7ESNGWK9evSJBWOnbt6+NHDmywGVuueUW69atWyQI6y0zZswYF1CVBx54wP146tev74K3Dz/8sC1fvjwyXZm0HTt2dOsjCAsk7zHh998PPyqs33oNAMmk84oyYRWEjeVN04MynH8AJKs7AmXCKggby5s2aOogNx8AAECpDMQqaDp9+vR83QDsu+++Nn/+fJf5Gs/UqVPjLrNu3TqbPXt2JMDqD7h684RCIVu6dGnS6wLgjwy1ffYxO/54szvvDP/Wa00HgGSZMcPsp58Kfl/B2B9/DM8HALtqxtIZ9tP6gk86Csb+uP5HNx8AAECp7JpAgVb1z1qlSpWo6XvssYf7PW/evHwB102bNrluBgpbRv28TtbziHHKK1++vDVr1iwy7eeff7Z77rnHatasad99950L4A4dOrTAbd66dav78axfv979zsvLcz9B0voVSA66nHSWmQt1TEeZqSrv5ZfNevXyHhPOszJlQu637olo+vPPm51+ejBl8zlmR5m5UMd0lJmNddR5xd8dgf+cEztfUNXmc0x+WUBptXzD8qTOBwAAsl+pC8SuWbPG/VZw1M977b2/q8uIgqfPPvus9evXzwVdPVu2bHH9y3oDeLVv394qVqzopsWj7g9GjRqVb/qqVavcuoK+QFHWry6I/AOOZVOZuVDHdJSZivJ0/fzII2aHHx5+XaZMnjVtui6cIxIKl/noo2ZHHx0dPEle+XyO2VBmLtQxHWVmYx1r1w4PzuWJd87x5lu50gLB55hcGzZsCHT9wK6oV7VeUucDAADZr9QFYr1+YdW49/Nex04v6TJev7LqmuDee++Nmv7kk09GvVZfseqf9uKLL7YKFSrkW8/w4cNt8ODBURmxjRo1sjp16li1atUsKOrjbsaMPPv11zJWu3Yda9++rJUrZym5ANM+V/1SdZGZyvJypcxUlKe+YN9884/X4ay0MvbZZ3UsL++PMufNM+vYMfnl8zlmR5mpLo9za+aW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bQsAQK6izVo6y0tHmZlcx6pJbrOW+HkvVeLJJ58s8H09vlXS/lFHjhxpkydPdjvMo0fFbrrpJlfu3LlzrVWrVq4vL8+wYcPca/+gDlpG05UxG0sZDfGyGs477zw76aSToub75z//aRdffLEdeuihJaoPAADJ5D2hoZuNQCarUqWKaySXhqeOgmzbAgCQi2izIltUSWKbtcQZsbfccovrL/Xxxx+3E044werXr+82asmSJfbqq6/aTz/95PpULQllno4YMcL1w9WiRQtbtGiR9ejRw/r06ePe12i2Kkd9k3latmxpEyZMcIHXQw45xKUNN2nSxIYOHRq17htuuMHdkfnkk0/su+++c2U0aNDABg0a5N4/8sgjXUBXQV/VZ968ea5+V1xxRUl3FQAAgUjV3WQgF47hINu2AADkstL09x4oiVIxWJeClx988IFdcMEFbhRZbZQaq3LMMcfYjBkzrFGjRiXesO7du7ufeNq0aRO3o2d1aaCfwgwfPtwqVKjgshq0vV6qst9xxx3nfgAAAJAbgm7bAgAAACUOxMo+++xjb731lusv64svvnD9fxx88MF24IEHWmmlfh08amDrR4FZAAAA5LZMbNsCAAAgRwKxnv3339/9AAAAAJmOti0AAACCUOLBugAAAJCYFStWuFFWv/zyS/f66KOPtnvvvTfdmwUAAABE0GbNkIxYAACQ+XbuNJsxw2z5crN69czatzcrVy7dW5UdNm/ebOvXr7dt27a51/q3fgAAAFA8tFmDky1t1lDIbMMGMw0JVb68WdWq6p7USgUCsQAAwKZMMRs40Oynn/6Y1rCh2bhxZmeemc4ty56+R//973/bSy+9ZE899ZT179/fBmqHAwAAIGG0WYOVDW3WNWvMfvzRTLHkKlXMNm0y09BQGnO1Ro10bx1dEwAAkPPUoO3ZM7pBKz//HJ6u91MlLy/PbrjhBrv00kvtnnvusbvvvtuWLl1q69ats9tvv9122203u/DCC+2xxx6zG2+80f7yl7/YypUrI8vrMarzzjvP/vGPf9jjjz9uV199tZUtW9auvfZa++mnn+zcc8+1cePG2ZNPPmn//Oc/rV+/fnbbbbf9r74/28iRI91Anpdddpl9++23Nm3aNOvatavVqlXL7r//ftu6dav7XbNmTTdd7/vp9cknn2y1a9fON/9dd91l7dq1swEDBrht1gCiqqu2qzCTJ092233HHXfY2LFj7YMPPnDTx48fb/vtt58dd9xx9uijj7of1UXbf8kll9g333xj7777rttObc8DDzxgv//+u6t3jRo17MQTT4zafr1//vnnu32ucr766qvIex9//LFdddVV9vDDD7vPQfvX45WhOt53330ug2LRokVuOzp27BjZXgAAgF1Bm5U2a1Ft1mnTPrbLL7/Knn32YZs48XZ78slwm1VB2eeee9c6dy4FbdYQkm7dunUh7Vr9DtrOnTtDy5cvd79TJdVl5kId01EmdcyOMqljbpa5efPm0Ny5c93vksrLywtt27YttH17XqhhQz28E/+nTJlQqFGjUGjHjhIXla9M/S7IoEGDQpdeemnkdb9+/UJnnXVW5HXjxo1D7777buT1iSeeGDr33HPdv7du3RqqW7du6JFHHomUN2/ePPc32StzwIABoR2+ymgfVq1aNfTWW29FltH8ixcvjswzfvz4UMeOHaO2s0OHDm56vDqq/Pbt2xc6/5QpU1w5RXnppZdCRxxxRGjLli3u9WOPPRaqX79+5P0+ffqErrvuuqh9Grv9jz/+eNT2r1q1KlSzZs2o7Rk7dmzotNNOixx/I0eODB199NHu31999ZXbBn12Xh2vv/56V66/DNXR88ADD4QeeuihXT6WU9mmykW0WTO7vFwpkzpmR5nUMTfLpM1KmzWVbdYvv/wqdNBBR4Rmz94W+vjjUOjjj/NCl156fej886/73+tQaNSo9LdZ6ZoAAIAcpv61Cru5rSaSHu3RfJ06BbsturuvrAD/Xe3TTjvNZRR4dMfas2nTJpd5oLv5ogwE3bWvX79+vvm938os8Fu4cKFVq1bNmjZtmm/9hSlsPr2njIaC5l++fLnLME3E8OHDXTaCMhGkTZs2duWVVya0HQXNo8yB5s2bR14rA0JZFZMmTYpsd+fOnd2jaaLMjJNOOinqc1BWR6tWrVwWyN577+3K8MrR+g8++GA7/vjjE6ojgJL3kTh9utmqVWZ16ph16EAfiQCyF21W2qxbi2izDht2rR199ElWvvwfn8Opp/7FTjutlfXseanVrr237dxZxvLy0ttmJRALAEAO0yAHyZxvV8yePdt27txp+++/f2TamXE6+5o6darNnz/f3nzzTdcYO+uss9z0OnXquADh66+/HmnoFkTzqDw9gvT+++9HGnD+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si4AAAAAAAAAcBk9YgEAAAAAAADAZTTEAgAAAAAAAIDLaIgFAAAAAAAAAJeluh0AQNNUXl4uxcXFsmPHDmnRooVkZWVJZmameDweSRabN2825dShsIOHw27VqpW0bds2rt8NaM4qKytN/aM/6enpgfrH602e68Pbtm2TnTt3htU/OllAbm5uXL8bACSK5pCvKnJWoGkiZyVndQOTdSW41157TebOnSt9+vSR5cuXy6BBg2TcuHGuxty4caNMmTJFRo8e7XqsiooKue+++0zFt27dOlNGO7ZbFe3LL78shYWFJvZnn30mI0eOlPPPP19i5ccff5SrrrpKXnjhBddi6Lrs3r174LEeSH7zm9/IAw884Fplq1WNfv7KlSula9eu4vP55Pjjj5e99trLlXi6ndxyyy0Rn7v11lvl0ksvjXrM//73v7J06VJzcrBlyxazjv/0pz+Jm5566imZN2+e9OvXz+wfv/rVr+S4446Lyf6ucV988UUZMGCArF+/3pwoTJw40dWYqqioSG644QbJycmRK664otHxaoup2+3jjz8ua9eulU2bNskPP/wgf/7zn+WMM85wJZ7697//bdannpB9/fXX0rdvX7n88sslNTU1JnX3L7/8ImPHjpV33nnHtXhpaWlSVVUVeDxq1Ch55JFHpFevXq7FVM8//7zZbnv06GH200MOOcT8RDue1nU1HTcuuOACuffee6MeU3300Ucyf/58SUlJMfuJNlpMmjSp0ScLtcV844035KWXXpK9995bfvrpJ9l///1l/PjxjYqH5BOPfFWRsyZ2zhqPfFWRs7qDnJWcNRoxg5GzNj5eMuWsGxMoX6VHbAL7+OOP5cYbbzQ7qH1VeMyYMWbj1Qop2rRy1QpBD1z/+Mc/5IgjjhC3afJx1llnSbdu3czjt99+2+xYzzzzTKMPKpFcffXV8t1335nEVq94aXLbuXNnk+BG42Bdl+rqavnjH/9oYrtJDyY333yzDBkyxCSX++23n3Ts2NHVmJoI9O7d2/xN1amnnmq23VmzZrkSr7S01FS2wetST1oefvhhmTBhQtTjvfnmmybpCN5O9MD26KOPupbY3nPPPfKvf/3LrEc9iGn59KCSnZ0thx12mKv7+4oVK+Tss8+WhQsXmgOn0vWq25UeAN2IuXr1annooYekZcuW8sQTT0TlZLOumPo3PPzww+Xc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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Создание двух графиков рядом\n", + "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))\n", + "\n", + "# ============= Левый график: случайные данные =============\n", + "ax1.set_title(\"Поиск в случайных данных\")\n", + "ax1.set_ylabel('Время, с')\n", + "ax1.set_xlabel('Повторения')\n", + "ax1.set_xticks(iterations)\n", + "# ax1.set_xticklabels(range(1, 6))\n", + "\n", + "ax1.scatter(iterations, ll_random_search, label='связный список', color=ll_col)\n", + "ax1.axhline(y=ll_random_search_average, color=ll_col, linewidth=1, linestyle='--', alpha=0.7)\n", + "\n", + "ax1.scatter(iterations, ht_random_search, label='хеш таблица', color=ht_col)\n", + "ax1.axhline(y=ht_random_search_average, color=ht_col, linewidth=1, linestyle='--', alpha=0.7)\n", + "\n", + "ax1.scatter(iterations, bst_random_search, label='дерево', color=bst_col)\n", + "ax1.axhline(y=bst_random_search_average, color=bst_col, linewidth=1, linestyle='--', alpha=0.7)\n", + "\n", + "ax1.legend()\n", + "ax1.grid(True, alpha=0.3)\n", + "\n", + "# ============= Правый график: отсортированные данные =============\n", + "ax2.set_title(\"Поиск в отсортированных данных\")\n", + "ax2.set_ylabel('Время, с')\n", + "ax2.set_xlabel('Повторения')\n", + "ax2.set_xticks(iterations)\n", + "# ax2.set_xticklabels(range(1, 6))\n", + "\n", + "ax2.scatter(iterations, ll_sorted_search, label='связный список', color=ll_col)\n", + "ax2.axhline(y=ll_sorted_search_average, color=ll_col, linewidth=1, linestyle='--', alpha=0.7)\n", + "\n", + "ax2.scatter(iterations, ht_sorted_search, label='хеш таблица', color=ht_col)\n", + "ax2.axhline(y=ht_sorted_search_average, color=ht_col, linewidth=1, linestyle='--', alpha=0.7)\n", + "\n", + "ax2.scatter(iterations, bst_sorted_search, label='дерево', color=bst_col)\n", + "ax2.axhline(y=bst_sorted_search_average, color=bst_col, linewidth=1, linestyle='--', alpha=0.7)\n", + "\n", + "ax2.legend()\n", + "ax2.grid(True, alpha=0.3)\n", + "\n", + "# Общий заголовок\n", + "plt.suptitle(f'Сравнение времени поиска в структурах данных (N = {countRandomSearch} + {countNotExitstSearch})', fontsize=14)\n", + "\n", + "plt.tight_layout()\n", + "plt.savefig('../img/search.pdf', \n", + " format='pdf',\n", + " dpi=300,\n", + " bbox_inches='tight', # обрезает лишние поля\n", + " pad_inches=0.1)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "0fd42f30", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABWIAAAJKCAYAAACmkjw+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3QeUFFXaxvGXIDlIVDIoyYComBERVMS0uIiIrIJhXXUNYCAZQBcFUVfBnNOqGBDdDwMGDKCYA+qiZBEEBVGi5OnvPLetprqnJ3d1/P84c4aurqpbt9LceuuGcqFQKGQAAAAAAAAAgMCUD27VAAAAAAAAAAAhEAsAAAAAAAAAASMQCwAAAAAAAAABIxALAAAAAAAAAAEjEAsAAAAAAAAAASMQCwAAAAAAAAABIxALAAAAAAAAAAEjEAsAAAAAAAAAASMQCwAAAAAAAAABIxALAAAAAGls8+bNdsUVV7jfSJzhw4fb77//nurNAADkkHKhUCiU6o0AAGS/VatW2e23324zZ860XXbZxWrUqGGVKlWys846yw488EA7/fTTbeLEianeTAAA0s65555rF110ke2///72yy+/uKDsypUr7Y033rD27dvbF198YVWrVo3M/84779gNN9xg7733nlWrVs2OPPJIe/DBB93f31T6+OOP7YknnrC777477vdPPvmkffjhh7bbbrvZ3Llz7aijjrK+fftGzbNt2zb717/+ZVu3brW6devat99+a5dffrl17Ngxar6ff/7Zrr/+emvWrJlt377dfvrpJ7dP6tevH5lH0wYPHmzPPPOMVahQIaBcAwCwA4FYAEDg9KD4t7/9zT3s6OGxSpUqbroeovRQtHz5cveAyJ8kAACi/fe//7X//e9/dtVVV0VN/+GHH1yA9u2337Yrr7zSbrnllnzLapmjjz7aunfvbqmUl5fn8vH3v//dTjrpJHvsscfyzfPUU0+5gOiUKVMiy/Ts2dMt4w/Gnnfeeda2bVsbMmSI+6yAdJcuXdxybdq0cdO2bNlinTp1socfftgOOuggN2369Ok2aNAg++STT2ynnXaKrG/y5Mn2448/ujIKAABBo2sCAECg3n33XTvxxBNd7ZWrr746EoQVPQiptsqvv/6a0m0EACAdbdq0yUaNGuVqw8Zz5plnumClWpx89tln+b5XwFK1S1Pprbfesv79+9usWbOsYsWKcedRLVcFVv/5z39GppUvX97lWy9wFZQV1X59/PHH7YILLojM16BBAzvuuOPcfvI89NBDriawF4SVI444wv1+9NFHo9L+61//6oLAeikMAEDQCMQCAALzxx9/uIcvNZu88MILC5xvwoQJVq5cuaRuGwAA6e7ZZ5+1ww8/3GrXrl3gPPfff7/rlkC1Y9XSJN2oRq5qul533XVR3Sf4zZgxwwVC99lnn6jp6m5g6dKlrrsCef75561FixZWs2bNfPO99NJLkfxrv8Wuy5tP6/BT+UMB7XvvvbfMeQUAoCgEYgEAgVGtEz1YqVuCwqj/tngPTECm8GprAX7qbiVVXa6kMm31x4nE7CPV1FQgszDNmze3sWPH2tdff23jxo2zTKQ+bqVOnTpR0+vVq+d+f/rpp5H5Yufx5tu4caPrwqGo+bx1+anrhqeffjpBuQEAoGAEYgEAgXn11Vfd70MOOaTIeW+++Wb3e9q0aa4poR6WNO3GG2903RpceumlrouDL7/8Mt/D7H333We33Xab62+2V69ekXQ9quWiAcFU62XYsGH273//2/0+4YQTXDNHWbdunUuvSZMmrjmj0lQQ+YUXXrBjjjkmUmPm9ddfj6z3tddes7PPPttuuukmV9NH61QzUpk0aZJbv5ZT33Zqmjlnzhw3QrOaW+65555umxUo0W99VpPNkSNH2nfffee6dBg4cKBbXuvx1+DRYCca5Ez7ZsyYMa7p5urVqwvdv2vXrnV52nXXXd3gJtpm9SeovvfOOeecyKjRJd3/3vZffPHFduutt7rfjzzySOT7u+66y/XTp1pQ77//fr7tUl5U00vHxz94y7Jly1wt6muuucYdL+VX+0W+//57u/baa93AKuoPUN+LtkOfNV3fz549295880133LQftf06LhroRvmvVauWO97K55o1awrcdx999JEbTE7rOPTQQyP5WL9+vXXr1s0qV67sBorxAis6FupyQ+vWvtN+UZ+GWr5Hjx4usOLR/laNcB0L5XHEiBGub8NYzz33nDsPe/fu7danbW7ZsqUb9E55Xbx4sZtPy+ocuuyyy9x+0fF9+eWXS3yO+/fxXnvt5fatdzx1rvr3sdesWOkNGDDApaH5hw4d6tapY3vPPfcUen5+8MEHdv7557v5FRBRHnVu65g98MADVlyqOac8/OMf/7DRo0dHNdfWNbr33nu7Y6MfDRa47777usCVzjWvybSOg/Zto0aNXC09damifap7i/aZ8uoN8qPjpeUaN25s//nPfyLboSbWysupp57qjo3/fnDGGWe481LUZ6amqdWAl08NqqRm1gqsqYajvlfTaZ2z6ltT35ckbd1zdF3oXNG5qz5D1YRb3+s82bBhQ9Q+nDdvno0fP94dQ32v/anr0aNgn8537T91L/N///d/kfuh7m06X7TtxaFzs0+fPi5POua6Dlq1auW2Vftc/XaKtvGOO+5w26TpJ598srsu/bz7qLZBedb9Vvdd3X/991HtO51bqlGpgau0rVq/7lsHHHCAm1f3O61f9yf9X9P0nf7WxNL1rPuC5tH9TzU3X3nlFZcvTVOQVNsi2i7vPqBruii6nnXMDjvssCLnVZN+zae/g7p+M82SJUvcb3/3ReLVoPW+1+/YeWLn0z1Y9+eC5tP9XvdDP5076mvWu5cCABAYDdYFAEAQ9txzT1XHCn333XclWm7Lli2hnXfeObTvvvuGfv7558j0l156KVStWrXQxx9/HJn273//O9S5c+fQtm3b3Ocff/wxVL169dCMGTOi1vnwww+7bcnLy4tMu/7660ONGjUKrV+/PjLtzDPPdOvze/PNN92yCxYsiEx77rnnQl26dHHb6hk0aFDonHPOiXyeNm2aW27evHlR62vSpEno2muvjZqmz82bN4+a9tprr7nltR7P+++/H9prr71Ca9eujUy7/fbbQ0cddVSoOJS/I444Impa9+7dQ3/5y19Ktf8vvvji0JAhQyKft2/fHtp///1DTzzxRGTaQw89FDr55JND/fv3z7c9jz/+eKhFixbu+HhWrlwZatOmTeirr76KTPvyyy9DDRo0CK1atSoyrVmzZqGrr746an36rOl+Om7aj2+//XZk2saNG1262h/FofOrZcuWocsuuyxqutY5duzYuMsMHz488v+FCxfmO5bLly9354L/XD3xxBND5513Xtz1aVl/HrTtOgc9OrdPOumk0N133x2ZtmHDBpfGe++9V+JzXLQvR44cGTXttNNOy7ePlddKlSqFfvvtt6jt0Tr9x7YwOnc0/yOPPBK138qXLx+aPHlykcsvXbo01Lhx49BTTz0VdW3oXNbx1vWu9Xl0/P3X4VlnnRX5/8033xyqWLFi1L7cvHlz6OCDDw716dMnKt0zzjgj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Qfbwww+7zw899JBddtlldvnll6d60wAAyDiUFQEAyFwEYoE0pABVp06d7I033rDHHnss7jyqYXj88ccnfduAktp3332tWrVqrvmkHHTQQa5m7D777JPqTQMAICNRVgQAIDPRNQGQpmbNmuWandWoUcNmz55tu+66a9T36iPs3nvvtSZNmqRsG5G5dOtXn3HJoBo7d999t7377ru2adMml/aJJ55oF154YdK2IVP2VS5gfwJAYlBWBJCOKOslDvsyO1EjFkhTHTt2tKFDh9rvv/9uF110UdR3y5Ytc83NCipYqwbE2Wef7Qrk1113nd1www02fPhwq1ChglWqVMk1E3///fcj8+v/d955p91444126aWX2nHHHWfvvPNO3HXPmzfPbVfjxo1dn59a9+jRo+3ggw92fySOOeYYu+OOO6KWmThxovXq1ctGjBjhgm8DBgxweRD1F6rmdXvuuadbXn2ZjRkzxn2nhwdti6Z7zfDWrVvn1tevXz83vW7dui5v2i4F+tTkvXz58q4pnprEf/DBB5HtWLNmjZt25pln2jXXXGOnnnqq3Xrrre4PXHEon6rN6Q16obz/61//cus544wz7Mcff7SS2Lhxo8vTCSecYIMHD7arrrrKJkyYYEuXLo2a780333TnQJ06dezqq6926Wq5Ro0auW0599xz3TH/+uuv3f7VcdZ0/d/bz9pvxx57bGTbZ8yY4Y67jvdOO+3kzgttw3vvvWc//PCD2xYdY81/+umn21NPPRXZHvVHd99997njNGzYMLfe+++/P2qb/cdV26NjpmP7yiuv2FFHHeU+6zgVdFx33nlnt+7vvvvOPvzwQ1fzR8fUf1z1nY699ouW0bJaR6xPP/3ULeMtr3Vpee2Df/7zn26alu/SpYu7rkTnuKbtsssubt8vX768WMdU+dC51a5dO3de6Fjp59BDD42c38qvfz+pv9ybb77Zrr32Wjv55JNtyJAhbrqfroWePXu6dTRt2tSloWP72muv2fnnnx91LajvQG+f6bjqOzVd1bxaRuk0a9Ys6tjGXofaXu869FuxYkXU8trnWl7nvtL2zkn1V/j999+7Zf7v//7PKlasaFWqVHHXibYNAFB2lBWzv6y4fv1693dX+2TUqFHub/uVV15pv/32W2Qe5UnHrX///u5Yevlu37692x86ltoH+s7vP//5jytb6NxR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brvNjjrqqEit1hNPPNEN/KA+ybxlNF1B2HgUNPb67ktm81QAAAAUH6U0AACAgP3yyy/WsGFD+/rrr93nQw45xO64445UbxaSoFu3bjZy5EgXiL3vvvtcv66nnHKKDRgwwH2/YcMG19XA+vXrI8u0b9/e1XBV4FXLKJjbokUL12VCLA2Coul33nmn+6z1alkAAICSosyaITViAQBA5lOFuhkzzJYvN2vUyKxLF7MUD2SfNTZu3Oj6/PQGYNL/Y/sARfbq1auX+4nnwAMPdMHUWOrSQD9F0eBdCvT+61//cjVhVSN227ZtCdluAADSEWXW4FBmDR6BWAAAYJMnmw0aZLZ06Y5pTZuaTZhg1rt3Krcse/oe/b//+z978cUX7cknn7Szzz7bBmmHA2Wk7g0qVaoU+axgrP8zAADZhDJrsCizBo+uCQAAyHEq0PbpE12glZ9+Ck/X98mi2nzXXXedXXTRRXb77be7fjN//PFHN2L8zTffbDvttJP94x//sIcfftjVAFTfmitWrIgsr2ZU55xzjmum/cgjj9iwYcNcYOrqq6+2pUuX2plnnmkTJkyw//znP3bvvffaWWedZePGjfszvz+5JuAKbGnE+e+++86mTZvmBk6qV6+e3X333bZ582b3u27dum66vvfT5+OPP97q16+fb/5///vfrobjpZde6ra5cuXKLq/arsJMmjTJbfctt9xi48ePt/fff99N12BNu+22m+tX9KGHHnI/you2/5///Kf973//s3feecdtp7bnnnvusT/++MPlu06dOnbsscdGbb++P/fcc90+VzrffPNN5LtPP/3U9XP6wAMPuOPgNYMXLw3l8a677nI1KBYuXOi2o2vXrpHtBQAAKAvKrJRZs6LMGkLCrVmzJqRdq99B2759e2j58uXud7IkO81cyGMq0iSP2ZEmeczNNDdu3BiaPXu2+11aeXl5oS1btoS2bs0LNW0aCqlEEO+nXLlQqFmzUGjbtlInlS9N/S7I4MGDQxdddFHk81lnnRU67bTTIp+bN28eeueddyKfjz322NCZZ57p/r958+ZQw4YNQw8++GAkvTlz5ri/yV6al156aWibLzPahzVr1gy9+eabkWU0/6JFiyLzPProo6GuXbtGbecRRxzhpsfLo9Lv0qVLofNPnjzZpVOUF198MXTAAQeENm3a5D4//PDDocaNG0e+HzBgQOiaa66J2qex2//II49Ebf/KlStDdevWjdqe8ePHh0466aTI+Tdq1KjQIYcc4v7/zTffuG3QsfPyeO2117p0/Wkoj5577rkndP/995f5XE5mmSoXUWbN7PRyJU3ymB1pksfcTJMyK2VWD2XWHeiaAACAHKb+tQp7ua0i0pIl4fmOPDLYbdHbfb219r/VPumkk1yNAo/eWHs0yJFqHuhtvqgGgt7aN27cON/83m/VLPBbsGCB1apVy1q3bp1v/YUpbD59FztqvX/+5cuXu7f1xTFixAhXG0E1Ebz+RK+44opibUdB86jmQNu2bSOfVQNCtSomTpwY2W4NMKWmaaKaGccdd1zUcVCtjo4dO7paILvuuqtLw0tH6997773t6KOPLlYeAQAAikKZlTLr5iwpsxKIBQAgh2mQg0TOVxYffvihbd++3XbffffItN5xOvuaOnWqzZ0719544w1XGDvttNPc9AYNGrjC1muvvRYp6BZE8yg9NUF67733IgU4f9MqNY2SgpopedNXrVrlfl9wwQVWrVq1IpuxqdmXmlONHTu20Hl//fVX+/7776P2R4cOHdxPaanpW9++faPypIcIPRD401HzLP14zbhUqPVr2rSpbd261e3Dv/71r26ajt3111/vmqNpnwIAACQKZVbKrN9kSZk1sECs+o746KOPrEqVKnbwwQe7Ew0AAKQXjTSbyPnKQgU+/++C9OzZ04488kjX75YKkrNnz3aFKXnqqafshRdesBNPPNGaNGni+qOKR4U0/cyaNcsOO+wwV1Deb7/9It/36dMnqqA7f/78fOtQ31nqr0v0xl/bNHPmzEK3XbUnNOhBhWIM7Vvc/VFc2k/btm2zffbZp0TpaJnY77zP+s6/j7T/VfYbMGCAff755+7/2YKyLQAAqUOZlTJrXpaUWQMZrEudDrdp08Z1kNuqVSubMmWKi/6rWjMAAEgfXbqER5otqLWQpjdrFp4vaAcddJBrZqQ36n7+Zl+x1AxMAyDo7bioqZEKUt9++62NHDkyX+2EL7/8Muqzmio1a9bMHnvssTJtuwqqn332mRtsoCAq8GpwAP9b/MI0bNjQFcpj94c3EERJqCnXE088Yeedd16+79Qkq0aNGvnSUV5UeD300ENdmn4//PCDK5gfcsghkWnt2rWz5s2b25AhQ9xAEddcc41lC8q2AACkFmVW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X281atQo1XYi/VWoYDZhglmfPvmDsd7n8ePD8wFAtqLMipwMxN5///327LPP2h133OFqDahwKKtWrbLHHnvMbrnlFttzzz3thBNOSOT2AgCAAEz+brINmjrIlq7dMQpM01pNbULPCdZ7j94p3TYgGYIq237wwQc2ZswYF1gt92ekrFevXq7/2X79+sVdZuHChW7wsFmzZlmVKlXctEGDBtm4ceNs2LBh7vPUqVNt6NCh9txzz7lgrQYYUy1eBWZfeumlMu4NpLPevc0mTdI5YbZs2Y7pqimrIKy+B4BsRZkVOds1wcSJE10zrYsvvjhSUJV69eq52gQff/yx3XfffYnaTgAAEGCBts9zfaIKtPLT2p/cdH0PZLugyrYjR460vn37RoKwMnDgQDcwWEFuvPFG69mzZyQI6y2jWrkbN250n9euXWtLly61NWvWuM9avwKyb7/9dom3EZlHwdYffjB76y2zK68M/160iCAsgOxGmRU5XSN27733tkaF9ALfokULa9euXWlXDwAAktS0S7UKQhbK952mlbNyNnjqYOvVrlfSmnxt27bN7rnnHnvmmWdcrUDV9FMwq0OHDq4GYLdu3Vzz68qVK1v9+vVtzpw5dsMNN9hOO+1kZ511lr3++uuu1qCWU63DL774wv7617+6YJhn3rx5bkAmDcy0YsUKa9OmjZ1xxhn23Xff2YQJE1ztSH2v5ukKzikYpzS0PtE01Z5s27atrV692m2LaiwicwVRtlXQdPr06XbppZdGTW/VqpXNnTvX1Xzdbbfd8i3n1XaNXUZB1w8//NC6d+/uzmf/OS2qDXvooYeWaBuRudT9QNeuZitWmDVsaPbn7QkAshJlVsqsluuBWJ04RalUqVLUZxU4dfABAEB6UP9asbUKYgu2S9YucfMd2fLIpGxTxYoVXeBK/V3+/e9/d9Oefvpp11z8mGOOscsuu8wFxbz+MlVLUYXYu+66y813yCGHuELrAw884ArImzZtsr322ssVSPv06WPr16+3E0880Q3K1LhxY7eOww47zAXZDjzwQLcuFWpVC1IGDBhgDRo0cP17auCmb7/91v75z3+6puZeeUiFbBW89RuZKYiyrQKtOgerV68eNd3rw1UPZLGB2A0bNrg+YQtbRoHYWK+99pr9/PPP7hooiPqS1Y9HtWolLy/P/QRJ69eDZtDppDLNXMhj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VRg13x44cKALTin4FdsvlGoMqmAaa88993Q1DfVTGNVK9Gom+sWrmYDMlKiybbdu3VwTQZ2zGsV44cKFdsopp9iAAQPc9xqEQyMrq485T/v27d2DmAKvGnBj+fLlbjA5/4OTrpMHH3zQDcqhc1wPZHpwU1qpGAgDAIBkocxKmTUnArHqB2vw4MFu5GCNjqcq0l6/VIrMq4CqQQt0MO+++27XAXFRJwQAAICf+tiK12eVAksHHnigG4CgKKqNQOES6VS27dWrl/uJR+e1miLGUpcGhfVBq/7dLrjgglJtDwAAKBvKrAg0EKvCoQqCeoMvqhmg6P7KlStdcytF71WAVU0BRfBff/1116+FOhbW6K0AAABFUb9ZGtyoqFoDGkFWI9jH66dL5ZMvv/zS1TJUQfi0004LcIuRqSjbAgCA0qLMisADsTfccIM7MV544QUX1Vdh9amnnrIbb7zRdUB88skn28033xxpBqV+L84//3xXVZvCKgAAKA7V8POaaxekX79+BX6nZmEagEA/ohoGauYFxKJsCwAASosyKwIPxL799tv2/vvvW7169dzn2rVr27Bhw2y//fZzo8B98803Uf1YqNCqgqr6wQIAAADSCWVbAAAApEL54sykmgFeQdVPAwIcccQR+ToTFlW/btu2bWK2EgAA5EOfUsh0qTqHKdsCAJA8lFmR6UIJPIeLFYgtbOTV5s2bF/hdzZo1S7dVAACgyL/Lf/zxR6o3BSgT9YumoGdhZc0gULYFACB4lFmRLTYksMxasayR33g1BhJhypQpNmPGDGvdurUtWLDAOnbsaP379y90mZkzZ9rzzz9v7du3t2XLllmdOnXcaLh+3333nd13331unt9//911knzNNde4gRj8vvjiC3vwwQdt9913dzu6cePGduqppwaSVwAAStov1c4772wrVqxwn6tVq1biv8deX1T6+xfU3/JUp0ke0zNNb/m1a9e6H53LOqeTKRVlWwCIZ/t2s+nTzVauNGvQwOyII/R3PtVbBSQGZdZ0TU+BxR1pVq9ezoJONhOPYyigMmvF4o4IV5DCMlPYcoX54IMPbMyYMS6w6q2/V69eVr58+QI7PNaot2effbbNmjUrMirdoEGDbNy4ca7PL2+E3OOPP94+/fRTq1+/vpt2++232yWXXGL33ntvZF1vvfWWXX/99fbKK69YrVq1bNKk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+eab8s9//lP2228/+f777+UnP/mJnHvuuXsVD4knFuVVRZk1vsussSivKsqszqDMSpk1EjEDUWbd+3iJVGbdFkflVVrExrGPPvpIZsyYYQ5Q667w+PHjzc6rGVKkaeaqGYKeuJ555hk55phjxGla+DjvvPOkV69e5v27775rDqznn39+r08q4dx0002ydOlSU7DVO15auO3evbsp4EbiZN2c+vp6Of/8801sJ+nJ5M4775SRI0eawuUBBxwgXbt2dTSmFgQGDBhgtqk644wzzL47Z84cR+JVVlaazDZwXepFy+OPPy4TJ06MeLy33nrLFDoC9xM9sT355JOOFWz//Oc/y9///nezHvUkpunTk0pubq4cccQRjh7va9eulQsuuECWLFliTpxK16vuV3oCdCLmhg0b5LHHHpOMjAyZPXt2RC42m4up2/Doo4+Wiy66yLxftmyZHHTQQea3aEEz0vEeffRRee6550zBVi8yq6qqpG/fvqag+cADDziSxmC6XlevXt2qWC2NpzFOP/10c5xqgahPnz6tjtfSmLfddpu5ONF9SGlhT88ln332WcTjaeWBVkzovhrowQcfNBdkrdFcTP1cL6qvvPJKW740bdo0k3YnYr766qsmz9Pzprbasi5QNE8466yzWhUTiSfa5VVFmTUxyqyxKK8qyqyRR5mVMmskYgajzLr38RKhzPpVPJZXtUUs4tPYsWO99913n23aP//5T+/gwYMdj627zuzZsx2NUVVV5e3UqZP3jjvusE0/5JBDvEOGDHEk5sSJE719+vTxlpeX+6d17drVe+qpp3qj4aGHHvJedNFF3tGjRzsaZ926dY5vv0B/+9vfzH7p8Xj805588knv3LlzHYt59913h0y79dZbvStXrnQk3llnneXdsmWLbVppaan3tNNOcyReWVmZNzMz0ztz5kzb9Kuuusp7/PHHO368X3jhhd4rrrjCNm3x4sXevLw8765duxyJGahv377e6dOn73Wc5mLqfnv55ZeHbOucnBxvTU1NxOPde++93i5dunjXr1/vn3booYd6hw8fvlexmooZ6MUXXzT5oK5fJ+NFets1F3PBggXeDh06eCsqKvzTXnnlFe8TTzzhSLxw+Y/G+t///rfX8RqLOWXKFO/HH38cMu8xxwv0NYcAABVWSURBVBzjSEzNz3U/ueSSS0LOY06doxGf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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Создание двух графиков рядом\n", + "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))\n", + "\n", + "# ============= Левый график: случайные данные =============\n", + "ax1.set_title(\"Удаление в случайных данных\")\n", + "ax1.set_ylabel('Время, с')\n", + "ax1.set_xlabel('Повторения')\n", + "ax1.set_xticks(iterations)\n", + "# ax1.set_xticklabels(range(1, 6))\n", + "\n", + "ax1.scatter(iterations, ll_random_delete, label='связный список', color=ll_col)\n", + "ax1.axhline(y=ll_random_delete_average, color=ll_col, linewidth=1, linestyle='--', alpha=0.7)\n", + "\n", + "ax1.scatter(iterations, ht_random_delete, label='хеш таблица', color=ht_col)\n", + "ax1.axhline(y=ht_random_delete_average, color=ht_col, linewidth=1, linestyle='--', alpha=0.7)\n", + "\n", + "ax1.scatter(iterations, bst_random_delete, label='дерево', color=bst_col)\n", + "ax1.axhline(y=bst_random_delete_average, color=bst_col, linewidth=1, linestyle='--', alpha=0.7)\n", + "\n", + "ax1.legend()\n", + "ax1.grid(True, alpha=0.3)\n", + "\n", + "# ============= Правый график: отсортированные данные =============\n", + "ax2.set_title(\"Удаление в отсортированных данных\")\n", + "ax2.set_ylabel('Время, с')\n", + "ax2.set_xlabel('Повторения')\n", + "ax2.set_xticks(iterations)\n", + "# ax2.set_xticklabels(range(1, 6))\n", + "\n", + "ax2.scatter(iterations, ll_sorted_delete, label='связный список', color=ll_col)\n", + "ax2.axhline(y=ll_sorted_delete_average, color=ll_col, linewidth=1, linestyle='--', alpha=0.7)\n", + "\n", + "ax2.scatter(iterations, ht_sorted_delete, label='хеш таблица', color=ht_col)\n", + "ax2.axhline(y=ht_sorted_delete_average, color=ht_col, linewidth=1, linestyle='--', alpha=0.7)\n", + "\n", + "ax2.scatter(iterations, bst_sorted_delete, label='дерево', color=bst_col)\n", + "ax2.axhline(y=bst_sorted_delete_average, color=bst_col, linewidth=1, linestyle='--', alpha=0.7)\n", + "\n", + "ax2.legend()\n", + "ax2.grid(True, alpha=0.3)\n", + "\n", + "# Общий заголовок\n", + "plt.suptitle(f'Сравнение времени удаления в структурах данных (N = {countDeletes})', fontsize=14)\n", + "\n", + "plt.tight_layout()\n", + "plt.savefig('../img/delete.pdf', \n", + " format='pdf',\n", + " dpi=300,\n", + " bbox_inches='tight', \n", + " pad_inches=0.1)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9eca6493", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/stepushovgs/data-structures/docs/Отчёт.md b/stepushovgs/data-structures/docs/Отчёт.md new file mode 100644 index 0000000..b5c5c67 --- /dev/null +++ b/stepushovgs/data-structures/docs/Отчёт.md @@ -0,0 +1,122 @@ +## Практические графики +### Информация о тестировании +- Общее число записей: 20000 +- Каждый замер повторялся: 20 раз +- Количество существующих записей для случайного поиска: 1000 +- Количество несуществующих записей для поиска: 500 +- Количество элементов для удаления: 1000 + +![[insert.pdf]] +**Тестирование вставки (рис. 1)** + +![[search.pdf]] +**Тестирование поиска (рис. 2)** + +![[delete.pdf]] +**Тестирование удаления (рис. 3)** +## Анализ результатов + +### Как порядок входных данных влияет на скорость вставки в BST (деградация до O(n) на отсортированных данных)? + +По определению, при вставке отсортированных данных, структура бинарного дерева поиска вырождается в связный список. +Для визуализации этого в тесте выводятся высота и количество элементов в дереве: +Для случайных данных вывод выглядит примерно так: +``` +Высота дерева: 28, элементов: 8634 +``` +Для сортированных данных же: +``` +Высота дерева: 8634, элементов: 8634 +``` +Заметим, что при случайных данных скорость вставки в бинарное дерево почти лишь немного уступает по скорости хеш-таблице. При сортированных данных из-за рекурсивной реализации вставки бинарное дерево проигрывает связному списку(который имеет линейную сложность вставки) + +### Почему хеш-таблица почти не чувствительна к порядку. +Хеш-таблица не чувствительна к порядку данных, так как использует для распределения элементов хеш значения данных (сложность операции одинакова для любых однотипных данных) и после производит вставку в связный список(в моей реализации проходит по списку и вставляет данные в конец). Поэтому хеш-таблица ни на одном из этапов не сравнивает данные, следовательно их порядок не влияет на скорость. + +### Почему связный список всегда медленен при поиске. +Операция поиска в связном списке имеет линейную сложность $O(n)$ не зависимо от порядка данных, что можно видеть на графике (см. рис. 2). Для бинарного дерева поиска эта сложность в лучшем случае $O(\log(N))$, а в худшем $O(N)$. Для хеш-таблицы сложность вставки $O(1)$, с хорошей хеш-функцией и низким заполнением. + +### Как удаление работает в каждой структуре. +#### Связный список +Находим элемент перед удаляем элементом, и заменяем его поле `next` на `next.next`, то есть теперь он указывает на элемент, который идёт после удаляемого элемента: +``` Go +current := ll.head + +for current.next != nil { + if current.next.data.Name == targetName { + current.next = current.next.next + return true + } + current = current.next +} +``` + +#### Бинарное дерево поиска +После того, как мы нашли узел, который необходимо удалить, у нас возможны три случая. + +Случай 1: У удаляемого узла нет правого ребенка. +В этом случае мы просто перемещаем левого ребенка (3) на место удаляемого узла(5). В результате дерево будет выглядеть так: +``` +Удаляем элемент со значением 5 +ДО УДАЛЕНИЯ: ПОСЛЕ УДАЛЕНИЯ: + + [8] [8] + / \ / \ + [5] [10] [3] [10] + / / \ + [3] [1] [4] + / \ +[1] [4] +``` + + +Случай 2: У удаляемого узла есть только правый ребенок, у которого, в свою очередь нет левого ребенка. +В этом случае нам надо переместить правого ребенка(8) удаляемого узла (5) на его место. +``` +Удаляем элемент со значением 5 +До удаления: После удаления: + + [10] [10] + / \ / \ + [5] [12] [8] [12] + / \ / \ + [1] [8] [1] [9] + \ + [9] +``` + + +Случай 3: У удаляемого узла есть первый ребенок, у которого есть левый ребенок. +В этом случае место удаляемого узла занимает крайний левый ребенок правого ребенка удаляемого узла. +Давайте посмотрим, почему это так. Мы знаем о поддереве, начинающемся с удаляемого узла следующее: + +- Все значения справа от него больше или равны значению самого узла. +- Наименьшее значение правого поддерева — крайнее левое. + +Мы должны поместить на место удаляемого узел со значением, меньшим или равным любому узлу справа от него. Для этого нам необходимо найти наименьшее значение в правом поддереве. Поэтому мы берем крайний левый узел правого поддерева. + +``` +Удаляем элемент со значением 5 +До удаления: После удаления: + + [10] [10] + / \ / \ + [5] [12] [7] [12] + / \ / \ + [1] [9] [1] [9] + / / + [7] [8] + \ + [8] +``` + +#### Хеш-таблица +Находим индекс элемента в таблица, далее производим удаление элемента в связном списке, который соответствует этому индексу. + + +# Вывод +Мы реализовали и протестировали три различные структуры хранения данных: связный список, бинарное дерево поиска и хеш-таблица. Сравнили скорость операций вставки, удаления и поиска для каждой структуры. +Если не важен порядок хранения и извлечения данных, то хеш-таблица лучший выбор для быстрых вставки, удаления и поиска. +Если нужно хранить данные с возможностью быстрого отсортированного обхода, то стоит выбрать бинарное дерево поиска. +Если нужно хранить данные в порядке поступления(например очередь), то стоит выбрать связный список. + diff --git a/stepushovgs/data-structures/source/bin_search_tree_C/bst.c b/stepushovgs/data-structures/source/bin_search_tree_C/bst.c new file mode 100644 index 0000000..80e06f1 --- /dev/null +++ b/stepushovgs/data-structures/source/bin_search_tree_C/bst.c @@ -0,0 +1,208 @@ +#include +#include +#include + +#include "bst.h" +#include "queue.h" +/* +3. Двоичное дерево поиска +Узел — словарь: `{'val': '123', 'left': None, 'right': None}.` + +Функции: + +def bst_insert(root, name, phone) — рекурсивно или итеративно вставляет, возвращает новый корень (если корень меняется). + +def bst_find(root, name) — поиск. + +def bst_delete(root, name) — удаление, возвращает новый корень. + +def bst_list_all(root) — центрированный обход (рекурсивно собирает записи в отсортированном порядке). +*/ + + + +bst_node* create_bst_node(char name[NAME_LEN], char phone[PHONE_LEN]) +{ + bst_node* node = (bst_node*)malloc(sizeof(bst_node)); + + strcpy(node->name, name); + strcpy(node->phone, phone); + + node->left = NULL; + node->right = NULL; + + return node; +} + +bst_node* bst_minimum(bst_node* node) +{ + if (node->left == NULL) + return node; + return bst_minimum(node->left); +} + +bst_node* bst_maximum(bst_node* node) +{ + if (node->right == NULL) + return node; + return bst_maximum(node->right); +} + +void print_bst(bst_node node) +{ + //printf("value: %d\n", node.value); + + printf("name: %s, phone: %s\n", node.name, node.phone); +} + +void bst_inorder_traversal(bst_node* HEAD) +{ + if (HEAD != NULL) + { + bst_inorder_traversal(HEAD->left); + print_bst(*HEAD); + bst_inorder_traversal(HEAD->right); + } +} + +void bst_preorder_traversal(bst_node* HEAD) +{ + if (HEAD != NULL) + { + print_bst(*HEAD); + bst_preorder_traversal(HEAD->left); + bst_preorder_traversal(HEAD->right); + } +} + +bst_node* bst_search(bst_node* HEAD, char target_name[NAME_LEN]) +{ + /* + Node search(x : Node, k : T): + if x == null or k == x.key + return x + if k < x.key + return search(x.left, k) + else + return search(x.right, k) + */ + + if ((HEAD == NULL) || strcmp(HEAD->name, target_name) == 0) + { + return HEAD; + } + if (strcmp(target_name, HEAD->name) < 0) + { + return bst_search(HEAD->left, target_name); + } + else + { + return bst_search(HEAD->right, target_name); + } +} + +bst_node* bst_insert(bst_node* HEAD, char name[NAME_LEN], char phone[PHONE_LEN]) +{ + /* + Node insert(x : Node, z : T): // x — корень поддерева, z — вставляемый ключ + if x == null + return Node(z) // подвесим Node с key = z + else if z < x.key + x.left = insert(x.left, z) + else if z > x.key + x.right = insert(x.right, z) + return x + */ + + if (HEAD == NULL) + { + return create_bst_node(name, phone); + } + else if (strcmp(name, HEAD->name) < 0) + { + HEAD->left = bst_insert(HEAD->left, name, phone); + } + else if (strcmp(name, HEAD->name) > 0) + { + HEAD->right = bst_insert(HEAD->right, name, phone); + } + return HEAD; +} + +bst_node* bst_delete(bst_node* root, char target_name[NAME_LEN]) +{ // корень поддерева, удаляемый ключ + if (root == NULL) + return root; + + if (strcmp(target_name, root->name) < 0) + root->left = bst_delete(root->left, target_name); + else if (strcmp(target_name, root->name) > 0) + root->right = bst_delete(root->right, target_name); + else { + if (root->left != NULL && root->right != NULL) + { + strcpy(root->name, bst_minimum(root->right)->name); + strcpy(root->phone, bst_minimum(root->right)->phone); + + root->right = bst_delete(root->right, root->name); + } + else + { + bst_node* temp = root; + if (root->left != NULL) + root = root->left; + else + root = root->right; + free(temp); + } + } + return root; +} + +void delete_bst(bst_node* root) +{ + if (root == NULL) + return; + else + { + delete_bst(root->left); + delete_bst(root->right); + free(root); + } +} + +void printTree(bst_node* node, int depth) { + + if (node == NULL) return; + + printTree(node->right, depth + 1); + + for (int i = 0; i < depth; i++) + printf("\t"); + //printf("%d\n", node->value); + print_bst(*node); + + printTree(node->left, depth + 1); +} + +void treeLevelTraversal(bst_node* node) { + if (!node) return; + + Queue q; + Queue* hq = &q; + queueInit(hq); + + queuePush(hq, node); + while(!queueEmpty(hq)) + { + bst_node* hn = queuePop(hq); + //printf("%d\n", hn->value); + print_bst(*hn); + + if(hn->left) + queuePush(hq, hn->left); + if(hn->right) + queuePush(hq, hn->right); + + }; +}; diff --git a/stepushovgs/data-structures/source/bin_search_tree_C/bst.h b/stepushovgs/data-structures/source/bin_search_tree_C/bst.h new file mode 100644 index 0000000..1bf960d --- /dev/null +++ b/stepushovgs/data-structures/source/bin_search_tree_C/bst.h @@ -0,0 +1,37 @@ +#define NAME_LEN 20 +#define PHONE_LEN 20 + +typedef struct bst_node +{ + //int value; + + char name[NAME_LEN]; + char phone[PHONE_LEN]; + + struct bst_node* right; + struct bst_node* left; +}bst_node; + +bst_node* create_bst_node(char name[NAME_LEN], char phone[PHONE_LEN]); + +bst_node* bst_minimum(bst_node* node); + +bst_node* bst_maximum(bst_node* node); + +void print_bst(bst_node node); + +void bst_inorder_traversal(bst_node* HEAD); + +void bst_preorder_traversal(bst_node* HEAD); + +bst_node* bst_search(bst_node* HEAD, char target_name[NAME_LEN]); + +bst_node* bst_insert(bst_node* HEAD, char name[NAME_LEN], char phone[PHONE_LEN]); + +bst_node* bst_delete(bst_node* root, char target_name[NAME_LEN]); + +void treeLevelTraversal(bst_node* node); + +void printTree(bst_node* node, int depth); + +void delete_bst(bst_node* root); diff --git a/stepushovgs/data-structures/source/bin_search_tree_C/queue.c b/stepushovgs/data-structures/source/bin_search_tree_C/queue.c new file mode 100644 index 0000000..adea3cb --- /dev/null +++ b/stepushovgs/data-structures/source/bin_search_tree_C/queue.c @@ -0,0 +1,42 @@ +#include + +#include "queue.h" + +int queueEmpty(Queue* q) +{ + return (q->head == q->tail); +} + +int size(Queue* q) +{ + if (q->head > q->tail) + return QUEUE_MAX_LENGTH - q->head + q->tail; + else + return q->tail - q->head; +} + +void queuePush(Queue* q, void* ptr) +{ + if (size(q) != QUEUE_MAX_LENGTH) + { + q->p[q->tail] = ptr; + q->tail = (q->tail + 1) % QUEUE_MAX_LENGTH; + } +}; + +void queueInit(Queue* q) +{ + q->head = 0; + q->tail = 0; +} + +void* queuePop(Queue* q) +{ + if (queueEmpty(q)) + return NULL; + void* x = q->p[q->head]; + q->head = (q->head + 1) % QUEUE_MAX_LENGTH; + + return x; +}; + diff --git a/stepushovgs/data-structures/source/bin_search_tree_C/queue.h b/stepushovgs/data-structures/source/bin_search_tree_C/queue.h new file mode 100644 index 0000000..5bbdfce --- /dev/null +++ b/stepushovgs/data-structures/source/bin_search_tree_C/queue.h @@ -0,0 +1,17 @@ +#define QUEUE_MAX_LENGTH 100 + +typedef struct Queue { + void* p[QUEUE_MAX_LENGTH]; + unsigned int head; + unsigned int tail; +} Queue; + +int queueEmpty(Queue* q); + +void queuePush(Queue* q, void* p); + +void* queuePop(Queue* q); + +void queueInit(Queue* q); + +int size(Queue* q); diff --git a/stepushovgs/data-structures/source/go.mod b/stepushovgs/data-structures/source/go.mod new file mode 100644 index 0000000..3367dd1 --- /dev/null +++ b/stepushovgs/data-structures/source/go.mod @@ -0,0 +1,3 @@ +module source + +go 1.26.3 diff --git a/stepushovgs/data-structures/source/linked_list_c/linked_list.c b/stepushovgs/data-structures/source/linked_list_c/linked_list.c new file mode 100644 index 0000000..0eeb9e7 --- /dev/null +++ b/stepushovgs/data-structures/source/linked_list_c/linked_list.c @@ -0,0 +1,166 @@ +#include +#include +#include +#include + +#include "linked_list.h" + +/* +Связный список (LinkedListPhoneBook) + +Узел представляется словарём: `{'name': 'Имя', 'phone': '123', 'next': None}.` + +Функции: + +def ll_insert(head, name, phone) — проходит до конца (или сразу добавляет в конец) и возвращает новую голову (если вставка в начало) или изменяет список по ссылке. Удобнее возвращать новую голову, если вставка может быть в начало. + +def ll_find(head, name) — ищет узел, возвращает телефон или None. + +def ll_delete(head, name) — удаляет узел, возвращает новую голову. + +def ll_list_all(head) — собирает все записи в список и сортирует (сортировка вынесена отдельно). +*/ + + +int getListNodeLength(Node* HEAD) +{ + int len = 0; + + Node* current = HEAD; + while (current != NULL) + { + len++; + current = current->next; + } + + return len; +} + +// Добавление в конец +Node* insert(Node* head, char name[NAME_BUFF_SIZE], char phone[PHONE_BUFF_SIZE], int show) +{ + Node* newNode = (Node*)malloc(sizeof(Node)); + + strcpy_s(newNode->name_, NAME_BUFF_SIZE, name); + strcpy_s(newNode->phone_, PHONE_BUFF_SIZE, phone); + newNode->next = NULL; + + printf("Data: %s %s\n", name, phone); + printf("New Data: %s %s\n", newNode->name_, newNode->phone_); + + if (head == NULL) +{ + printf("\nNew list\n"); + head = newNode; + return newNode; + } + + Node* last = head; + int ind = 0; + while (last->next != NULL) + { + if (show == 1) + printf("%d \n", ind++); + last = last->next; + } + + last->next = newNode; + return head; +} + +char* find(Node* HEAD, char target_name[NAME_BUFF_SIZE]) +{ + Node* current = HEAD; + + while (current != NULL) + { + + if (strcmp(target_name, current->name_) == 0) + { + return current->phone_; + } + + current = current->next; + } + return NULL; +} + +// Вывод всех элементов +void printAllNodes(Node* head) +{ + Node* current = head; + int ind = 0; + + while (current != NULL) + { + printf("Ind: %d\nName: %s\nPhone: %s\n", ind++, current->name_, current->phone_); + current = current->next; + } +} + +Node* deleteNode(Node* HEAD, char target_name[NAME_BUFF_SIZE]) +{ + Node* previous = NULL; + Node* current = HEAD; + + if (current != NULL && strcmp(target_name, current->name_) == 0) + { + HEAD = current->next; + free(current); + + return HEAD; + } + + while (current != NULL && strcmp(target_name, current->name_) == 0) + { + previous = current; + current = current->next; + } + + if (current == NULL) return HEAD; + + previous->next = current->next; + free(current); + + return HEAD; +} + +Node* listAll(Node* HEAD) +{ + if (HEAD == NULL) + { + return NULL; + } + + int len = getListNodeLength(HEAD); + Node* current = HEAD; + + Node* list = (Node*)malloc(len * sizeof(Node)); + + int ind = 0; + while (current != NULL) + { + list[ind++] = *current; + current = current->next; + } + + return list; +} + +void printNode(Node node) +{ + printf("%s ", node.name_); + printf("%s\n", node.phone_); +} + +void printListNode(Node* list, int length) +{ + printf("\n\n%d\n", length); + for (int i = 0; i < length; i++) + { + printNode(list[i]); + } +} + + + diff --git a/stepushovgs/data-structures/source/linked_list_c/linked_list.h b/stepushovgs/data-structures/source/linked_list_c/linked_list.h new file mode 100644 index 0000000..7fb4422 --- /dev/null +++ b/stepushovgs/data-structures/source/linked_list_c/linked_list.h @@ -0,0 +1,29 @@ +#define NAME_BUFF_SIZE 50 +#define PHONE_BUFF_SIZE 12+1 // +1 for end symbol + +typedef struct Node +{ + char name_[NAME_BUFF_SIZE]; + char phone_[PHONE_BUFF_SIZE]; + struct Node* next; +} Node; + +typedef struct LinkedListPhoneNumbers { + Node* HEAD; +} LinkedListPhoneNumbers; + +Node* insert(Node* head, char name[NAME_BUFF_SIZE], char phone[PHONE_BUFF_SIZE], int show); +void printAllNodes(Node* head); +void printNode(Node node); + +char* find(Node* HEAD, char target_name[NAME_BUFF_SIZE]); + + +Node* deleteNode(Node* HEAD, char target_name[NAME_BUFF_SIZE]); + + +Node* listAll(Node* HEAD); + +void printListNode(Node list[], int length); + +int getListNodeLength(Node* HEAD); diff --git a/stepushovgs/data-structures/source/old_c/main.c b/stepushovgs/data-structures/source/old_c/main.c new file mode 100644 index 0000000..15b3a51 --- /dev/null +++ b/stepushovgs/data-structures/source/old_c/main.c @@ -0,0 +1,44 @@ +#include +#include +#include + +#include "linked_list/linked_list.h" + +#define NAME_BUFF_SIZE 50 +#define PHONE_BUFF_SIZE 12+1 // +1 for end symbol + +int main() +{ + Node* list = NULL; + char phone[] = "1234"; + for (int i = 0; i < 12; i++) + { + char num[3]; + sprintf_s(num, 3, "%d", i); + + char name[] = "name "; + strcat_s(name, 9, num); + printf("%d %s %s\n", i, name, phone); + list = insert(list, name, phone, 0); + } + char test_name[] = "name 20"; + char test_phone[] = "phone 343"; + + list = insert(list, test_name, test_phone, 1); + + printAllNodes(list); + + printf("\n%s\n", find(list, test_name)); + + strcpy_s(test_name, NAME_BUFF_SIZE, "name 10"); + list = deleteNode(list, test_name); + + printAllNodes(list); + + Node* listNodes = listAll(list); + printListNode(listNodes, getListNodeLength(list)); + + free(listNodes); + + return 0; +} diff --git a/stepushovgs/data-structures/source/old_c/main_tree.c b/stepushovgs/data-structures/source/old_c/main_tree.c new file mode 100644 index 0000000..9b264a7 --- /dev/null +++ b/stepushovgs/data-structures/source/old_c/main_tree.c @@ -0,0 +1,86 @@ +#include +#include + +#include "bin_search_tree/bst.h" + +#define COUNT_NUMBERS 64 + +int isInArr(int arr[], int len, int target) +{ + for (int i = 0; i < len; i++) + { + if (arr[i] == target) return 1; + } + + return 0; +} + +char get_dozen(int number) +{ + return (char)'0' + number % 10; +} +char get_units(int number) +{ + return (char)'0' + number / 10; +} + + +int main() +{ + printf("hello world!\n"); + + //bst_node* head = create_bst_node("name", "phone"); + bst_node* head = NULL; + + int arr[COUNT_NUMBERS] = {0}; + char name[NAME_LEN] = "name_xx"; + char phone[PHONE_LEN] = "phone_xx"; + int temp = 0; + for (int i = 0; i < COUNT_NUMBERS; i++) + { + do + { + temp = rand() % 100; + } + while (isInArr(arr, i - 1, temp)); + + arr[i] = temp; + + name[5] = get_dozen(temp); + name[6] = get_units(temp); + + phone[6] = get_dozen(temp); + phone[7] = get_units(temp); + + + head = bst_insert(head, name, phone); + printf("%d ", arr[i]); + } + + printf("\n\ninorder traversal: \n"); + bst_inorder_traversal(head); + + printf("\n\npreorder traversal: \n"); + bst_preorder_traversal(head); + + char tar_name[NAME_LEN] = "name_44"; + + printf("\n\nУдаляем элемент с значением %s:\n", tar_name); + + head = bst_delete(head, tar_name); + + bst_inorder_traversal(head); + + + printf("\n\nВывод дерева:\n"); + + printTree(head, 0); + + printf("\n\nОбход в ширину:\n"); + treeLevelTraversal(head); + + + + delete_bst(head); + return 0; +} diff --git a/stepushovgs/data-structures/source/old_c/swap.c b/stepushovgs/data-structures/source/old_c/swap.c new file mode 100644 index 0000000..3a6cc08 --- /dev/null +++ b/stepushovgs/data-structures/source/old_c/swap.c @@ -0,0 +1,40 @@ +#include + +int Partition_Hoa(int arr[], int l, int r) +{ + int p = arr[(l + r) / 2]; + int i = l; + int j = r; + + while (1) + { + // #print(p) + while (arr[i] <= p) i++; + while (arr[j] > p) j--; + + if (i >= j) return j; + + swap(arr[i], arr[j]); + i++; + j--; + } +} +void QuickSort(int arr[], int l, int r) +{ + if (l < r): + { + int s = Partition_Hoa(arr, l, r); + QuickSort(arr, l, s-1); + QuickSort(arr, s+1, r); + } +} + + +int main() +{ + int arr[] = {2, 56, 10, 5, 2, 6, 9, 6, 3, 923, 3, 2, 1}; + + + + return 0; +} diff --git a/stepushovgs/data-structures/source/pkg/csv_writer/csv_writer.go b/stepushovgs/data-structures/source/pkg/csv_writer/csv_writer.go new file mode 100644 index 0000000..713b668 --- /dev/null +++ b/stepushovgs/data-structures/source/pkg/csv_writer/csv_writer.go @@ -0,0 +1,81 @@ +package csvwriter + +import ( + "encoding/csv" + "fmt" + "os" + "path/filepath" +) + +type BenchmarkResult struct { + Structure string + Mode string + Operation string + Time float64 +} + +func (b *BenchmarkResult) ToString() string { + return fmt.Sprintf("%s %s %s %f", b.Structure, b.Mode, b.Operation, b.Time) +} +func (b *BenchmarkResult) ToStrings() []string { + return []string{b.Structure, b.Mode, b.Operation, fmt.Sprintf("%f", b.Time)} +} + +// Создаём пустой csv файл с заголовками +func CreateEmptyCSV(dir, name string) error { + filename := filepath.Join(dir, name) + + file, err := os.Create(filename) + + if err != nil { + return err + } + defer file.Close() + + writer := csv.NewWriter(file) + defer writer.Flush() + header := []string{"Structure", "Mode", "Operation", "Time"} + writer.Write(header) + + return writer.Error() +} + +// AppendRaw дописывает произвольные строки в CSV +func AppendRaw(results []BenchmarkResult) error { + + filename := filepath.Join("results", "benchmarks.csv") + + fileExists := true + isEmpty := true + if info, err := os.Stat(filename); err == nil { + isEmpty = info.Size() == 0 + } else if os.IsNotExist(err) { + fileExists = false + } + + file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + if err != nil { + return err + } + defer file.Close() + + writer := csv.NewWriter(file) + defer writer.Flush() + + // Если файл новый или пустой, записываем заголовки + if !fileExists || isEmpty { + header := []string{"Structure", "Mode", "Operation", "Time"} + if err := writer.Write(header); err != nil { + return fmt.Errorf("не удалось записать заголовки: %w", err) + } + } + + rows := make([][]string, len(results)) + + for i, res := range results { + rows[i] = res.ToStrings() + // fmt.Println(res.ToStrings()) + } + + return writer.WriteAll(rows) // WriteAll пишет всё сразу +} diff --git a/stepushovgs/data-structures/source/pkg/data_struct/data_structure.go b/stepushovgs/data-structures/source/pkg/data_struct/data_structure.go new file mode 100644 index 0000000..059eed7 --- /dev/null +++ b/stepushovgs/data-structures/source/pkg/data_struct/data_structure.go @@ -0,0 +1,25 @@ +package data_struct + +import "fmt" + +type MyData struct { + Name string + Phone string +} + +func NewData(name, phone string) *MyData { + return &MyData{ + Name: name, + Phone: phone, + } +} + +func (d *MyData) ToString() string { + return fmt.Sprintf("Имя: %s, Телефон: %s", d.Name, d.Phone) +} + +func PrintList(list []MyData) { + for _, el := range list { + fmt.Printf("%s\n", el.ToString()) + } +} diff --git a/stepushovgs/data-structures/source/pkg/data_struct/qsort.go b/stepushovgs/data-structures/source/pkg/data_struct/qsort.go new file mode 100644 index 0000000..0ae848a --- /dev/null +++ b/stepushovgs/data-structures/source/pkg/data_struct/qsort.go @@ -0,0 +1,44 @@ +package data_struct + +func QSort(arr []MyData, l, r int) []MyData { + result := make([]MyData, len(arr)) + copy(result, arr) + qSort(result, l, r) + return result +} + +func qSort(arr []MyData, l, r int) []MyData { + if l < r { + s := Partition_Hoa(arr, l, r) + arr = qSort(arr, l, s) + arr = qSort(arr, s+1, r) + } + return arr +} + +func Partition_Hoa(arr []MyData, l, r int) int { + p := arr[(l+r)/2].Name + i := l - 1 + j := r + 1 + + for { + for { + i++ + if arr[i].Name >= p { + break + } + } + for { + j-- + if arr[j].Name <= p { + break + } + } + + if i >= j { + return j + } + + arr[i], arr[j] = arr[j], arr[i] + } +} diff --git a/stepushovgs/data-structures/source/pkg/gen_data/data_generator.go b/stepushovgs/data-structures/source/pkg/gen_data/data_generator.go new file mode 100644 index 0000000..2ebffd5 --- /dev/null +++ b/stepushovgs/data-structures/source/pkg/gen_data/data_generator.go @@ -0,0 +1,47 @@ +package gen_data + +import ( + "fmt" + "math/rand" + ds "source/pkg/data_struct" +) + +const ( + MAX_USER_IND = 10000 + PHONE_LEN = 11 +) + +func genRandomPhone() string { + phone := "" + for i := 0; i < PHONE_LEN; i++ { + phone += fmt.Sprintf("%d", rand.Intn(10)) + } + + return phone +} + +func RecordsShuffled(count int) []ds.MyData { + data := make([]ds.MyData, count) + number := 0 + for i := 0; i < count; i++ { + number = rand.Intn(MAX_USER_IND) + data[i].Name = fmt.Sprintf("User_%05d", number) + data[i].Phone = genRandomPhone() + } + + // Перемешиваем (Fisher-Yates shuffle) + for i := len(data) - 1; i > 0; i-- { + j := rand.Intn(i + 1) + data[i], data[j] = data[j], data[i] + } + + return data +} + +func RecordsSorted(count int) []ds.MyData { + data := RecordsShuffled(count) + + data = ds.QSort(data, 0, len(data)-1) + + return data +} diff --git a/stepushovgs/data-structures/source/pkg/structures/bin_search_tree/bin_search_tree.go b/stepushovgs/data-structures/source/pkg/structures/bin_search_tree/bin_search_tree.go new file mode 100644 index 0000000..4266d3c --- /dev/null +++ b/stepushovgs/data-structures/source/pkg/structures/bin_search_tree/bin_search_tree.go @@ -0,0 +1,287 @@ +package bin_search_tree + +import ( + "fmt" + ds "source/pkg/data_struct" +) + +type BinSearchTree struct { + root *BSTree +} + +type BSTree struct { + data ds.MyData + + left *BSTree + right *BSTree +} + +func NewBinSearchTree() *BinSearchTree { + return &BinSearchTree{} +} + +func newBinSearchTree(data ds.MyData) *BSTree { + return &BSTree{ + data: data, + left: nil, + right: nil, + } +} + +func (bst *BinSearchTree) Len() int { + return bst.root.Len() +} + +func (bst *BSTree) Len() int { + if bst == nil { + return 0 + } + return 1 + bst.left.Len() + bst.right.Len() +} + +func (bst *BinSearchTree) Minimum() *BSTree { + return bst.root.Minimum() +} + +func (root *BSTree) Minimum() *BSTree { + if root == nil { + return nil + } + if root.left == nil { + return root + } + return root.left.Minimum() +} + +func (bst *BinSearchTree) Maximum() *BSTree { + return bst.root.Maximum() +} +func (root *BSTree) Maximum() *BSTree { + if root == nil { + return nil + } + if root.right == nil { + return root + } + return root.right.Maximum() +} + +func (node *BSTree) PrintNode() { + fmt.Print(node.data.ToString()) +} + +func (node *BSTree) ToString() string { + if node == nil { + return "nil" + } + return node.data.ToString() +} + +func (bst *BinSearchTree) BstInorderTraversal() { + bst.root.BstInorderTraversal() +} + +func (root *BSTree) BstInorderTraversal() { + if root != nil { + root.left.BstInorderTraversal() + root.PrintNode() + fmt.Println() + root.right.BstInorderTraversal() + } +} + +func (bst *BinSearchTree) BstPreorderTraversal() { + bst.root.BstPreorderTraversal() +} + +func (root *BSTree) BstPreorderTraversal() { + if root != nil { + root.PrintNode() + fmt.Println() + root.left.BstPreorderTraversal() + root.right.BstPreorderTraversal() + } +} + +// Search +// Возвращает номер телефона по имени +func (bst *BinSearchTree) Search(targetName string) (string, bool) { + node, ok := bst.root.search(targetName) + if ok { + return node.data.Phone, true + } + return "", false +} + +/* + Node search(x : Node, k : T): + if x == null or k == x.key + return x + if k < x.key + return search(x.left, k) + else + return search(x.right, k) +*/ +// Приватная вспомогательная функция поиска +func (node *BSTree) search(targetName string) (*BSTree, bool) { + if node == nil { + return nil, false + } + if node.data.Name == targetName { + return node, true + } + if targetName < node.data.Name { + return node.left.search(targetName) + } + return node.right.search(targetName) +} + +// func (node *BinSearchTree) Insert(data ds.MyData) *BinSearchTree { +// if node == nil { +// return NewBinSearchTree(data) +// } else if data.Name < node.data.Name { +// node.left = node.left.Insert(data) +// } else if data.Name > node.data.Name { +// node.right = node.right.Insert(data) +// } else { +// node.data.Phone = data.Phone // Заменяем существующее значение +// } +// return node +// } + +func (bst *BinSearchTree) Insert(data ds.MyData) { + bst.root = bst.root.insert(data) +} + +func (root *BSTree) insert(data ds.MyData) *BSTree { + if root == nil { + return &BSTree{ + data: data, + } + } + + if data.Name < root.data.Name { + root.left = root.left.insert(data) + } else if data.Name > root.data.Name { + root.right = root.right.insert(data) + } else { + root.data.Phone = data.Phone + } + return root +} + +func (bst *BinSearchTree) InsertAll(data []ds.MyData) { + for _, el := range data { + bst.Insert(el) + } +} + +// Delete удаляет узел по имени. +// Возвращает нового потомка для родительского узла. + +/* +Node delete(root : Node, z : T): // корень поддерева, удаляемый ключ + if root == null + return root + if z < root.key + root.left = delete(root.left, z) + else if z > root.key + root.right = delete(root.right, z) + else if root.left != null and root.right != null + root.key = minimum(root.right).key + root.right = delete(root.right, root.key) + else + if root.left != null + root = root.left + else if root.right != null + root = root.right + else + root = null + return root +*/ + +func (bst *BinSearchTree) Height() int { + if bst.root == nil { + return 0 + } + return bst.root.height() +} + +// height возвращает высоту поддерева (для BSTree) +func (node *BSTree) height() int { + if node == nil { + return 0 + } + + leftHeight := node.left.height() + rightHeight := node.right.height() + + // Высота = 1 (текущий узел) + максимум из высот поддеревьев + if leftHeight > rightHeight { + return leftHeight + 1 + } + return rightHeight + 1 +} + +func (bst *BinSearchTree) Delete(targetName string) bool { + if bst.root == nil { + return false + } + + _, found := bst.Search(targetName) + if !found { + return false + } + + bst.root = bst.root.delete(targetName) + return true +} + +func (root *BSTree) delete(targetName string) *BSTree { + if root == nil { + return nil + } + + if targetName < root.data.Name { + root.left = root.left.delete(targetName) + } else if targetName > root.data.Name { + root.right = root.right.delete(targetName) + } else { + // Нашли узел для удаления + + // Случай 1: нет левого потомка + if root.left == nil { + return root.right + } + + // Случай 2: нет правого потомка + if root.right == nil { + return root.left + } + + // Случай 3: оба потомка есть + successor := root.right.Minimum() + root.data = successor.data // Копируем все данные сразу + root.right = root.right.delete(successor.data.Name) + } + + return root +} + +func (bst *BinSearchTree) PrintAll() { + bst.root.printAll(0) +} + +func (bst *BSTree) printAll(depth int) { + if bst == nil { + return + } + + bst.right.printAll(depth + 1) + + for i := 0; i < depth; i++ { + fmt.Printf("\t") + } + bst.PrintNode() + bst.left.printAll(depth + 1) +} diff --git a/stepushovgs/data-structures/source/pkg/structures/hash_table/hash_string.go b/stepushovgs/data-structures/source/pkg/structures/hash_table/hash_string.go new file mode 100644 index 0000000..0efa5bb --- /dev/null +++ b/stepushovgs/data-structures/source/pkg/structures/hash_table/hash_string.go @@ -0,0 +1,15 @@ +package hash_table + +func GetHashString(str string) int { + hash := 0 + + for _, ch := range str { + hash = (hash << 5) - hash + int(ch) + } + + if hash < 0 { + hash = -hash + } + + return hash +} diff --git a/stepushovgs/data-structures/source/pkg/structures/hash_table/hash_table.go b/stepushovgs/data-structures/source/pkg/structures/hash_table/hash_table.go new file mode 100644 index 0000000..129c223 --- /dev/null +++ b/stepushovgs/data-structures/source/pkg/structures/hash_table/hash_table.go @@ -0,0 +1,246 @@ +package hash_table + +import ( + "fmt" + ds "source/pkg/data_struct" +) + +// HashTable - хеш-таблица с цепочками +type HashTable struct { + buckets []*bucket + size int + capacity int + loadFactor float64 +} + +type bucket struct { + head *elementHT +} + +type elementHT struct { + data ds.MyData + next *elementHT +} + +// NewHashTable - создает новую хеш-таблицу +func NewHashTable(capacity int, loadFactor float64) *HashTable { + + buckets := make([]*bucket, capacity) + + for i := 0; i < capacity; i++ { + buckets[i] = &bucket{} + } + + return &HashTable{ + buckets: buckets, + size: 0, + capacity: capacity, + loadFactor: loadFactor, + } +} + +// func (h HashTable) getIndex(name string) int { +// return GetHashString(name) % h.size +// } + +// func (h HashTable) Add(name string) { + +// } + +func (ht *HashTable) GetIndex(name string) int { + hash := GetHashString(name) + return hash % ht.capacity +} + +func (ht *HashTable) Len() int { + return ht.size +} + +// func (ht *HashTable) getIndex(hash int) int { +// return hash % ht.capacity +// } + +func (h *HashTable) Insert(new ds.MyData) { + + if h.size >= int(float64(h.capacity)*h.loadFactor) { + h.resize() + } + + ind := h.GetIndex(new.Name) + + buck := h.buckets[ind] + + current := buck.head + + for current != nil { + if current.data.Name == new.Name { + current.data.Phone = new.Phone + return + } + + current = current.next + } + + newHead := &elementHT{ + data: new, + next: buck.head, + } + + buck.head = newHead + h.size++ +} + +func (ht *HashTable) InsertAll(data []ds.MyData) { + for _, el := range data { + ht.Insert(el) + } +} + +func (h *HashTable) Search(name string) (phone string, status bool) { + ind := h.GetIndex(name) + + buck := h.buckets[ind] + + current := buck.head + + for current != nil { + if current.data.Name == name { + return current.data.Phone, true + } + + current = current.next + } + + return "", false +} + +// func pressEnterToContinue() { +// fmt.Print("Нажмите Enter для продолжения...") +// bufio.NewReader(os.Stdin).ReadBytes('\n') +// } + +// resize - увеличивает размер таблицы +func (ht *HashTable) resize() { + + // fmt.Printf("Resize table!\n elements: %d(%.3f%%)\n old capacity: %d\n new capacity: %d\n", ht.size, float64(ht.size)/float64(ht.capacity), ht.capacity, 2*ht.capacity) + + // ht.Print() + + // pressEnterToContinue() + + newCapacity := ht.capacity * 2 + newHT := NewHashTable(newCapacity, ht.loadFactor) + + for _, b := range ht.buckets { + current := b.head + for current != nil { + newHT.Insert(current.data) + current = current.next + } + } + + ht.buckets = newHT.buckets + ht.capacity = newCapacity +} + +func (ht *HashTable) Delete(name string) bool { + ind := ht.GetIndex(name) + + buck := ht.buckets[ind] + + if buck.head == nil { + return false + } + + if buck.head.data.Name == name { + buck.head = buck.head.next + ht.size-- + return true + } + + prev := buck.head + current := buck.head.next + + for current != nil { + if current.data.Name == name { + prev.next = current.next + ht.size-- + return true + } + prev = current + current = current.next + } + + return false +} + +func (ht *HashTable) Contains(name string) bool { + _, ok := ht.Search(name) + return ok +} + +func (elem *elementHT) ToString() string { + if elem == nil { + return "nil" + } + + return elem.data.ToString() +} + +func (ht *HashTable) Print() { + for ind := 0; ind < ht.capacity; ind++ { + buck := ht.buckets[ind] + current := buck.head + + bucketsStr := "" + + for current != nil { + bucketsStr += " --> " + current.ToString() + current = current.next + } + fmt.Printf("[%d]: %s\n", ind, bucketsStr) + } +} + +func (ht *HashTable) listAll() []ds.MyData { + data := make([]ds.MyData, ht.size) + + index := 0 + + for ind := 0; ind < ht.capacity; ind++ { + buck := ht.buckets[ind] + current := buck.head + + for current != nil { + data[index] = current.data + index++ + // fmt.Println(current.name, current.phone) + current = current.next + } + } + + return data +} + +func (ht *HashTable) ListAll() []ds.MyData { + // fmt.Printf("Size: %d, Capacity: %d\n", ht.size, ht.capacity) + data := ht.listAll() + + data = ds.QSort(data, 0, len(data)-1) + + // for i, el := range data { + // fmt.Printf("[%d]: \"%s\", %d\n", i, el.name, el.phone) + // } + return data +} + +// func (ht *HashTable) PrintMostPopularnames(phone int) { +// // fmt.Printf("Size: %d, Capacity: %d\n", ht.size, ht.capacity) +// data := ht.listAll() + +// data = QSortElementsHT(data, 0, len(data)-1) + +// for i := 0; i < phone; i++ { +// fmt.Printf("[%d]: %3d : %s\n", i, ht.GetIndex(data[len(data)-i-1].name), data[len(data)-i-1].ToString()) +// } +// } diff --git a/stepushovgs/data-structures/source/pkg/structures/linked_list/linked_list.go b/stepushovgs/data-structures/source/pkg/structures/linked_list/linked_list.go new file mode 100644 index 0000000..c2e8bbb --- /dev/null +++ b/stepushovgs/data-structures/source/pkg/structures/linked_list/linked_list.go @@ -0,0 +1,169 @@ +package linked_list + +import ( + "fmt" + ds "source/pkg/data_struct" +) + +/* +Связный список (LinkedListPhoneBook) + +Узел представляется словарём: `{'name': 'Имя', 'phone': '123', 'next': None}.` + +Функции: + +def ll_insert(head, name, phone) — проходит до конца (или сразу добавляет в конец) и возвращает новую голову (если вставка в начало) или изменяет список по ссылке. Удобнее возвращать новую голову, если вставка может быть в начало. + +def ll_find(head, name) — ищет узел, возвращает телефон или None. + +def ll_delete(head, name) — удаляет узел, возвращает новую голову. + +def ll_list_all(head) — собирает все записи в список и сортирует (сортировка вынесена отдельно). +*/ + +type LinkedList struct { + head *LList +} + +type LList struct { + data ds.MyData + + next *LList +} + +func NewLinkedList() *LinkedList { + return &LinkedList{} +} + +func newLinkedList(data ds.MyData) *LList { + return &LList{ + data: data, + next: nil, + } +} + +func (ll *LList) ToString() string { + if ll == nil { + return "nil" + } + return ll.data.ToString() +} + +func (ll *LinkedList) Len() int { + + if ll == nil { + return 0 + } + len := 0 + + current := ll.head + for current != nil { + len++ + current = current.next + } + + return len +} + +func (ll *LinkedList) Insert(data ds.MyData) { + newNode := newLinkedList(data) + + if ll.head == nil { + ll.head = newNode + return + } + + current := ll.head + for current.next != nil { + current = current.next + } + current.next = newNode +} + +func (ll *LinkedList) InsertAll(data []ds.MyData) { + for _, el := range data { + ll.Insert(el) + } +} + +func (ll *LinkedList) Search(targetName string) (string, bool) { + current := ll.head + + for current != nil { + if current.data.Name == targetName { + return current.data.Phone, true + } + + current = current.next + } + return "", false +} + +func (ll *LinkedList) PrintAll() { + current := ll.head + index := 0 + + for current != nil { + fmt.Printf("[%d] %s\n", index, current.ToString()) + index++ + current = current.next + } +} + +func (ll *LinkedList) Delete(targetName string) bool { + if ll.head == nil { + return false + } + + // Особый случай: удаление головы списка + if ll.head.data.Name == targetName { + // Сдвигаем данные и указатель + *ll.head = *ll.head.next + return true + } + + // Стандартное удаление из середины/конца + current := ll.head + for current.next != nil { + if current.next.data.Name == targetName { + current.next = current.next.next + return true + } + current = current.next + } + + return false +} + +func (ll *LinkedList) listAll() []ds.MyData { + current := ll.head + + listLL := make([]ds.MyData, ll.Len()) + ind := 0 + for current != nil { + listLL[ind] = current.data + ind++ + current = current.next + } + + listLL = ds.QSort(listLL, 0, len(listLL)-1) + return listLL +} + +func (ll *LinkedList) GetByInd(ind int) (ds.MyData, bool) { + if ind >= ll.Len() { + return ds.MyData{}, false + } + + index := 0 + current := ll.head + for current != nil { + if index == ind { + return current.data, true + } + current = current.next + index++ + } + + return ds.MyData{}, false +} diff --git a/stepushovgs/data-structures/source/results/benchmarks.csv b/stepushovgs/data-structures/source/results/benchmarks.csv new file mode 100644 index 0000000..c1e916c --- /dev/null +++ b/stepushovgs/data-structures/source/results/benchmarks.csv @@ -0,0 +1,379 @@ +Structure,Mode,Operation,Time +Связный список,Случайный,Вставка,0.199516 +Связный список,Случайный,Поиск,0.024629 +Связный список,Случайный,Удаление,0.014065 +Связный список,Случайный,Вставка,0.196946 +Связный список,Случайный,Поиск,0.023807 +Связный список,Случайный,Удаление,0.013115 +Связный список,Случайный,Вставка,0.191475 +Связный список,Случайный,Поиск,0.023083 +Связный список,Случайный,Удаление,0.014584 +Связный список,Случайный,Вставка,0.189964 +Связный список,Случайный,Поиск,0.024014 +Связный список,Случайный,Удаление,0.014049 +Связный список,Случайный,Вставка,0.192273 +Связный список,Случайный,Поиск,0.023643 +Связный список,Случайный,Удаление,0.013426 +Связный список,Случайный,Вставка,0.191623 +Связный список,Случайный,Поиск,0.022900 +Связный список,Случайный,Удаление,0.014242 +Связный список,Случайный,Вставка,0.192131 +Связный список,Случайный,Поиск,0.024910 +Связный список,Случайный,Удаление,0.013999 +Связный список,Случайный,Вставка,0.190054 +Связный список,Случайный,Поиск,0.023244 +Связный список,Случайный,Удаление,0.014556 +Связный список,Случайный,Вставка,0.199543 +Связный список,Случайный,Поиск,0.023660 +Связный список,Случайный,Удаление,0.015066 +Связный список,Случайный,Вставка,0.193103 +Связный список,Случайный,Поиск,0.023620 +Связный список,Случайный,Удаление,0.014555 +Связный список,Случайный,Вставка,0.191255 +Связный список,Случайный,Поиск,0.023310 +Связный список,Случайный,Удаление,0.014155 +Связный список,Случайный,Вставка,0.190051 +Связный список,Случайный,Поиск,0.023622 +Связный список,Случайный,Удаление,0.014049 +Связный список,Случайный,Вставка,0.194320 +Связный список,Случайный,Поиск,0.024634 +Связный список,Случайный,Удаление,0.014369 +Связный список,Случайный,Вставка,0.191525 +Связный список,Случайный,Поиск,0.023547 +Связный список,Случайный,Удаление,0.014032 +Связный список,Случайный,Вставка,0.189879 +Связный список,Случайный,Поиск,0.022658 +Связный список,Случайный,Удаление,0.014757 +Связный список,Случайный,Вставка,0.193771 +Связный список,Случайный,Поиск,0.023675 +Связный список,Случайный,Удаление,0.014797 +Связный список,Случайный,Вставка,0.203894 +Связный список,Случайный,Поиск,0.025087 +Связный список,Случайный,Удаление,0.014177 +Связный список,Случайный,Вставка,0.192419 +Связный список,Случайный,Поиск,0.023327 +Связный список,Случайный,Удаление,0.014068 +Связный список,Случайный,Вставка,0.191059 +Связный список,Случайный,Поиск,0.023409 +Связный список,Случайный,Удаление,0.013834 +Связный список,Случайный,Вставка,0.192096 +Связный список,Случайный,Поиск,0.023889 +Связный список,Случайный,Удаление,0.015085 +Связный список,Случайный,Вставка (среднее),0.193345 +Связный список,Случайный,Поиск (среднее),0.023733 +Связный список,Случайный,Удаление (среднее),0.014249 +Связный список,Отсортированный,Вставка,0.193317 +Связный список,Отсортированный,Поиск,0.033389 +Связный список,Отсортированный,Удаление,0.023146 +Связный список,Отсортированный,Вставка,0.190249 +Связный список,Отсортированный,Поиск,0.032418 +Связный список,Отсортированный,Удаление,0.023950 +Связный список,Отсортированный,Вставка,0.193341 +Связный список,Отсортированный,Поиск,0.033679 +Связный список,Отсортированный,Удаление,0.024198 +Связный список,Отсортированный,Вставка,0.192107 +Связный список,Отсортированный,Поиск,0.035083 +Связный список,Отсортированный,Удаление,0.031384 +Связный список,Отсортированный,Вставка,0.196266 +Связный список,Отсортированный,Поиск,0.033967 +Связный список,Отсортированный,Удаление,0.023633 +Связный список,Отсортированный,Вставка,0.193438 +Связный список,Отсортированный,Поиск,0.033898 +Связный список,Отсортированный,Удаление,0.022652 +Связный список,Отсортированный,Вставка,0.192293 +Связный список,Отсортированный,Поиск,0.033186 +Связный список,Отсортированный,Удаление,0.024209 +Связный список,Отсортированный,Вставка,0.193963 +Связный список,Отсортированный,Поиск,0.041383 +Связный список,Отсортированный,Удаление,0.027010 +Связный список,Отсортированный,Вставка,0.191974 +Связный список,Отсортированный,Поиск,0.033188 +Связный список,Отсортированный,Удаление,0.024141 +Связный список,Отсортированный,Вставка,0.193575 +Связный список,Отсортированный,Поиск,0.034097 +Связный список,Отсортированный,Удаление,0.023053 +Связный список,Отсортированный,Вставка,0.195551 +Связный список,Отсортированный,Поиск,0.033767 +Связный список,Отсортированный,Удаление,0.023550 +Связный список,Отсортированный,Вставка,0.193096 +Связный список,Отсортированный,Поиск,0.034052 +Связный список,Отсортированный,Удаление,0.023542 +Связный список,Отсортированный,Вставка,0.192483 +Связный список,Отсортированный,Поиск,0.033566 +Связный список,Отсортированный,Удаление,0.023538 +Связный список,Отсортированный,Вставка,0.191346 +Связный список,Отсортированный,Поиск,0.033764 +Связный список,Отсортированный,Удаление,0.023127 +Связный список,Отсортированный,Вставка,0.191555 +Связный список,Отсортированный,Поиск,0.033191 +Связный список,Отсортированный,Удаление,0.024127 +Связный список,Отсортированный,Вставка,0.190323 +Связный список,Отсортированный,Поиск,0.033676 +Связный список,Отсортированный,Удаление,0.023664 +Связный список,Отсортированный,Вставка,0.192296 +Связный список,Отсортированный,Поиск,0.032708 +Связный список,Отсортированный,Удаление,0.024118 +Связный список,Отсортированный,Вставка,0.204537 +Связный список,Отсортированный,Поиск,0.041774 +Связный список,Отсортированный,Удаление,0.026976 +Связный список,Отсортированный,Вставка,0.193468 +Связный список,Отсортированный,Поиск,0.033044 +Связный список,Отсортированный,Удаление,0.023545 +Связный список,Отсортированный,Вставка,0.204401 +Связный список,Отсортированный,Поиск,0.035750 +Связный список,Отсортированный,Удаление,0.026609 +Связный список,Отсортированный,Вставка (среднее),0.193979 +Связный список,Отсортированный,Поиск (среднее),0.034479 +Связный список,Отсортированный,Удаление (среднее),0.024509 +Хеш таблица,Случайный,Вставка,0.003026 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.003299 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.003808 +Хеш таблица,Случайный,Поиск,0.001001 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.003292 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.004268 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.003100 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.004619 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.004010 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.002825 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.004394 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.003335 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.004183 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.002352 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.004124 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.003422 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.002977 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.005030 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.003815 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.003015 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка,0.003805 +Хеш таблица,Случайный,Поиск,0.000000 +Хеш таблица,Случайный,Удаление,0.000000 +Хеш таблица,Случайный,Вставка (среднее),0.003635 +Хеш таблица,Случайный,Поиск (среднее),0.000050 +Хеш таблица,Случайный,Удаление (среднее),0.000000 +Хеш таблица,Отсортированный,Вставка,0.002509 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.003017 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.003126 +Хеш таблица,Отсортированный,Поиск,0.001002 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.002257 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.003013 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.001668 +Хеш таблица,Отсортированный,Вставка,0.002519 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.003346 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.004243 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.001588 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.001585 +Хеш таблица,Отсортированный,Вставка,0.003053 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.003009 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.003074 +Хеш таблица,Отсортированный,Поиск,0.001185 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.003145 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.004152 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.004280 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.003098 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.004386 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.003416 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.002529 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка,0.003863 +Хеш таблица,Отсортированный,Поиск,0.000000 +Хеш таблица,Отсортированный,Удаление,0.000000 +Хеш таблица,Отсортированный,Вставка (среднее),0.003181 +Хеш таблица,Отсортированный,Поиск (среднее),0.000109 +Хеш таблица,Отсортированный,Удаление (среднее),0.000163 +Бинарное дерево поиска,Случайный,Вставка,0.004532 +Бинарное дерево поиска,Случайный,Поиск,0.000000 +Бинарное дерево поиска,Случайный,Удаление,0.001019 +Бинарное дерево поиска,Случайный,Вставка,0.005690 +Бинарное дерево поиска,Случайный,Поиск,0.000000 +Бинарное дерево поиска,Случайный,Удаление,0.001004 +Бинарное дерево поиска,Случайный,Вставка,0.005536 +Бинарное дерево поиска,Случайный,Поиск,0.001001 +Бинарное дерево поиска,Случайный,Удаление,0.000000 +Бинарное дерево поиска,Случайный,Вставка,0.008002 +Бинарное дерево поиска,Случайный,Поиск,0.000000 +Бинарное дерево поиска,Случайный,Удаление,0.000000 +Бинарное дерево поиска,Случайный,Вставка,0.007454 +Бинарное дерево поиска,Случайный,Поиск,0.001012 +Бинарное дерево поиска,Случайный,Удаление,0.000000 +Бинарное дерево поиска,Случайный,Вставка,0.006524 +Бинарное дерево поиска,Случайный,Поиск,0.000000 +Бинарное дерево поиска,Случайный,Удаление,0.001000 +Бинарное дерево поиска,Случайный,Вставка,0.004504 +Бинарное дерево поиска,Случайный,Поиск,0.000000 +Бинарное дерево поиска,Случайный,Удаление,0.000000 +Бинарное дерево поиска,Случайный,Вставка,0.007206 +Бинарное дерево поиска,Случайный,Поиск,0.000000 +Бинарное дерево поиска,Случайный,Удаление,0.000000 +Бинарное дерево поиска,Случайный,Вставка,0.006102 +Бинарное дерево поиска,Случайный,Поиск,0.000000 +Бинарное дерево поиска,Случайный,Удаление,0.000000 +Бинарное дерево поиска,Случайный,Вставка,0.007414 +Бинарное дерево поиска,Случайный,Поиск,0.000000 +Бинарное дерево поиска,Случайный,Удаление,0.001003 +Бинарное дерево поиска,Случайный,Вставка,0.005723 +Бинарное дерево поиска,Случайный,Поиск,0.000000 +Бинарное дерево поиска,Случайный,Удаление,0.001503 +Бинарное дерево поиска,Случайный,Вставка,0.005705 +Бинарное дерево поиска,Случайный,Поиск,0.001007 +Бинарное дерево поиска,Случайный,Удаление,0.000000 +Бинарное дерево поиска,Случайный,Вставка,0.006501 +Бинарное дерево поиска,Случайный,Поиск,0.000000 +Бинарное дерево поиска,Случайный,Удаление,0.001005 +Бинарное дерево поиска,Случайный,Вставка,0.005375 +Бинарное дерево поиска,Случайный,Поиск,0.000000 +Бинарное дерево поиска,Случайный,Удаление,0.001000 +Бинарное дерево поиска,Случайный,Вставка,0.004520 +Бинарное дерево поиска,Случайный,Поиск,0.001006 +Бинарное дерево поиска,Случайный,Удаление,0.000000 +Бинарное дерево поиска,Случайный,Вставка,0.005931 +Бинарное дерево поиска,Случайный,Поиск,0.001034 +Бинарное дерево поиска,Случайный,Удаление,0.000000 +Бинарное дерево поиска,Случайный,Вставка,0.007446 +Бинарное дерево поиска,Случайный,Поиск,0.000634 +Бинарное дерево поиска,Случайный,Удаление,0.000521 +Бинарное дерево поиска,Случайный,Вставка,0.005628 +Бинарное дерево поиска,Случайный,Поиск,0.000513 +Бинарное дерево поиска,Случайный,Удаление,0.000510 +Бинарное дерево поиска,Случайный,Вставка,0.005162 +Бинарное дерево поиска,Случайный,Поиск,0.000511 +Бинарное дерево поиска,Случайный,Удаление,0.000512 +Бинарное дерево поиска,Случайный,Вставка,0.006672 +Бинарное дерево поиска,Случайный,Поиск,0.000000 +Бинарное дерево поиска,Случайный,Удаление,0.000549 +Бинарное дерево поиска,Случайный,Вставка (среднее),0.006081 +Бинарное дерево поиска,Случайный,Поиск (среднее),0.000336 +Бинарное дерево поиска,Случайный,Удаление (среднее),0.000481 +Бинарное дерево поиска,Отсортированный,Вставка,0.993672 +Бинарное дерево поиска,Отсортированный,Поиск,0.060430 +Бинарное дерево поиска,Отсортированный,Удаление,0.065743 +Бинарное дерево поиска,Отсортированный,Вставка,0.984657 +Бинарное дерево поиска,Отсортированный,Поиск,0.060576 +Бинарное дерево поиска,Отсортированный,Удаление,0.067630 +Бинарное дерево поиска,Отсортированный,Вставка,1.077915 +Бинарное дерево поиска,Отсортированный,Поиск,0.064100 +Бинарное дерево поиска,Отсортированный,Удаление,0.066554 +Бинарное дерево поиска,Отсортированный,Вставка,0.986610 +Бинарное дерево поиска,Отсортированный,Поиск,0.060386 +Бинарное дерево поиска,Отсортированный,Удаление,0.065383 +Бинарное дерево поиска,Отсортированный,Вставка,0.976014 +Бинарное дерево поиска,Отсортированный,Поиск,0.060724 +Бинарное дерево поиска,Отсортированный,Удаление,0.066072 +Бинарное дерево поиска,Отсортированный,Вставка,0.954288 +Бинарное дерево поиска,Отсортированный,Поиск,0.062234 +Бинарное дерево поиска,Отсортированный,Удаление,0.067913 +Бинарное дерево поиска,Отсортированный,Вставка,0.948662 +Бинарное дерево поиска,Отсортированный,Поиск,0.061164 +Бинарное дерево поиска,Отсортированный,Удаление,0.064309 +Бинарное дерево поиска,Отсортированный,Вставка,0.940560 +Бинарное дерево поиска,Отсортированный,Поиск,0.058861 +Бинарное дерево поиска,Отсортированный,Удаление,0.065901 +Бинарное дерево поиска,Отсортированный,Вставка,0.944873 +Бинарное дерево поиска,Отсортированный,Поиск,0.060448 +Бинарное дерево поиска,Отсортированный,Удаление,0.065882 +Бинарное дерево поиска,Отсортированный,Вставка,0.928810 +Бинарное дерево поиска,Отсортированный,Поиск,0.061107 +Бинарное дерево поиска,Отсортированный,Удаление,0.064740 +Бинарное дерево поиска,Отсортированный,Вставка,0.925909 +Бинарное дерево поиска,Отсортированный,Поиск,0.060174 +Бинарное дерево поиска,Отсортированный,Удаление,0.064934 +Бинарное дерево поиска,Отсортированный,Вставка,0.926721 +Бинарное дерево поиска,Отсортированный,Поиск,0.062980 +Бинарное дерево поиска,Отсортированный,Удаление,0.062940 +Бинарное дерево поиска,Отсортированный,Вставка,0.932508 +Бинарное дерево поиска,Отсортированный,Поиск,0.059849 +Бинарное дерево поиска,Отсортированный,Удаление,0.064563 +Бинарное дерево поиска,Отсортированный,Вставка,0.941225 +Бинарное дерево поиска,Отсортированный,Поиск,0.058925 +Бинарное дерево поиска,Отсортированный,Удаление,0.062112 +Бинарное дерево поиска,Отсортированный,Вставка,0.935714 +Бинарное дерево поиска,Отсортированный,Поиск,0.059868 +Бинарное дерево поиска,Отсортированный,Удаление,0.064928 +Бинарное дерево поиска,Отсортированный,Вставка,0.925400 +Бинарное дерево поиска,Отсортированный,Поиск,0.060723 +Бинарное дерево поиска,Отсортированный,Удаление,0.063271 +Бинарное дерево поиска,Отсортированный,Вставка,0.935481 +Бинарное дерево поиска,Отсортированный,Поиск,0.059515 +Бинарное дерево поиска,Отсортированный,Удаление,0.063816 +Бинарное дерево поиска,Отсортированный,Вставка,0.930136 +Бинарное дерево поиска,Отсортированный,Поиск,0.057873 +Бинарное дерево поиска,Отсортированный,Удаление,0.063642 +Бинарное дерево поиска,Отсортированный,Вставка,0.931535 +Бинарное дерево поиска,Отсортированный,Поиск,0.059197 +Бинарное дерево поиска,Отсортированный,Удаление,0.064474 +Бинарное дерево поиска,Отсортированный,Вставка,0.933106 +Бинарное дерево поиска,Отсортированный,Поиск,0.062731 +Бинарное дерево поиска,Отсортированный,Удаление,0.062908 +Бинарное дерево поиска,Отсортированный,Вставка (среднее),0.952690 +Бинарное дерево поиска,Отсортированный,Поиск (среднее),0.060593 +Бинарное дерево поиска,Отсортированный,Удаление (среднее),0.064886 diff --git a/stepushovgs/data-structures/source/tests/benchmark/main.go b/stepushovgs/data-structures/source/tests/benchmark/main.go new file mode 100644 index 0000000..5993dbb --- /dev/null +++ b/stepushovgs/data-structures/source/tests/benchmark/main.go @@ -0,0 +1,288 @@ +package main + +import ( + "fmt" + "math/rand" + csvwriter "source/pkg/csv_writer" + ds "source/pkg/data_struct" + dg "source/pkg/gen_data" + bst "source/pkg/structures/bin_search_tree" + ht "source/pkg/structures/hash_table" + ll "source/pkg/structures/linked_list" + + // csv "source/pkg/csv_ri" + + "time" +) + +const ( + countUsers = 20_000 + countRepeat = 20 + countRandomSearch = 1000 + countNotExitstSearch = 500 + countDeletes = 1000 +) + +type TestData struct { + Items []ds.MyData // все записи + ItemsSorted []ds.MyData // все записи отсортированные + Search []ds.MyData // для поиска (существующие и несуществующие) + ToDelete []ds.MyData // для удаления + UniqueItems []ds.MyData // Уникальные элементы для тестов +} + +type DataStructure interface { + Insert(data ds.MyData) + InsertAll(data []ds.MyData) + Search(name string) (string, bool) + Delete(name string) bool + Len() int +} + +// Создатели структур +type StructureFactory func() DataStructure + +func NewLinkedList() DataStructure { + return ll.NewLinkedList() +} + +func NewHashTable() DataStructure { + return ht.NewHashTable(256, 0.75) +} + +func NewBinSearchTree() DataStructure { + return bst.NewBinSearchTree() +} + +func uniqueElements(data []ds.MyData) []ds.MyData { + res := make([]ds.MyData, 0, len(data)) + + for _, el := range data { + isUnique := true + for _, resEl := range res { + if el == resEl { + isUnique = false + break + } + } + if isUnique { + res = append(res, el) + } + } + + return res +} + +func GenerateTestData() TestData { + items := dg.RecordsShuffled(countUsers) + // fmt.Println("isSorted:", isSorted(items)) + itemsSort := ds.QSort(items, 0, len(items)-1) + + uniqueItems := uniqueElements(items) + existing := make([]ds.MyData, countRandomSearch) + // notExisting := [countNotExitstSearch]ds.MyData{} + notExisting := make([]ds.MyData, countNotExitstSearch) + toDelete := make([]ds.MyData, countDeletes) + + countUniq := len(uniqueItems) + for i := 0; i < countRandomSearch; i++ { + // randInd := rand.Intn(countUsers) + randInd := rand.Intn(countUniq) + existing[i] = uniqueItems[randInd] + // fmt.Println(randInd) + } + + for i := 0; i < countNotExitstSearch; i++ { + // randInd := rand.Intn(countUsers) + randInd := rand.Intn(10) + name := fmt.Sprintf("User_%d", randInd) + notExisting[i] = *ds.NewData(name, "") + // fmt.Println(randInd) + } + + for _, el := range notExisting { + existing = append(existing, el) + } + + // toDelete = make([]ds.MyData, countDeletes) + usedIndices := make(map[int]bool) + for i := 0; i < countDeletes; i++ { + var randInd int + for { + randInd = rand.Intn(countUniq) + if !usedIndices[randInd] { + usedIndices[randInd] = true + break + } + } + toDelete[i] = uniqueItems[randInd] + } + + return TestData{ + Items: items, + ItemsSorted: itemsSort, + Search: existing, + ToDelete: toDelete, + UniqueItems: uniqueItems, + } +} + +// Тест вставки массива данных (один раз) +func testOnesInsert(structure DataStructure, data []ds.MyData) float64 { + start := time.Now() + + for _, item := range data { + structure.Insert(item) + } + + return time.Since(start).Seconds() +} + +// Тест поиска массива данных (один раз) +func testOnesSearch(structure DataStructure, data []ds.MyData) float64 { + start := time.Now() + + // flag := true + + for _, item := range data { + structure.Search(item.Name) + // p, ok := structure.Search(item.Name) + + // if flag { + // flag = ((p == item.Phone) == ok) + // } + } + + // fmt.Println(flag) + + return time.Since(start).Seconds() +} + +// Тест удаления массива данных (один раз) +func testOnesDelete(structure DataStructure, data []ds.MyData) float64 { + start := time.Now() + + for _, item := range data { + structure.Delete(item.Name) + } + + return time.Since(start).Seconds() +} + +func testForData(nameStruct, mode string, factory StructureFactory, data_insert, data_search, data_delete []ds.MyData) { + BenchRes := make([]csvwriter.BenchmarkResult, 0, countRepeat*3+3) // Массив строк отчёта + + averageTimeInsert := 0. + averageTimeSearch := 0. + averageTimeDelete := 0. + + for iteration := 0; iteration < countRepeat; iteration++ { + + structure := factory() + + insertTime := testOnesInsert(structure, data_insert) + averageTimeInsert += insertTime + + // Отладочная информация для бинарного дерева (проверка на вырождение) + if bst, ok := structure.(*bst.BinSearchTree); ok { + fmt.Printf( + "Высота дерева: %d, элементов: %d\n", + bst.Height(), bst.Len(), + ) + } + + BenchRes = append(BenchRes, csvwriter.BenchmarkResult{ + Structure: nameStruct, + Mode: mode, + Operation: "Вставка", + Time: insertTime, + }) + + searchTime := testOnesSearch(structure, data_search) + averageTimeSearch += searchTime + + BenchRes = append(BenchRes, csvwriter.BenchmarkResult{ + Structure: nameStruct, + Mode: mode, + Operation: "Поиск", + Time: searchTime, + }) + + deleteTime := testOnesDelete(structure, data_delete) + averageTimeDelete += deleteTime + + BenchRes = append(BenchRes, csvwriter.BenchmarkResult{ + Structure: nameStruct, + Mode: mode, + Operation: "Удаление", + Time: deleteTime, + }) + fmt.Printf("%s | Вставка | %s | Время: %f\n", nameStruct, mode, insertTime) + fmt.Printf("%s | Поиск | %s | Время: %f\n", nameStruct, mode, searchTime) + fmt.Printf("%s | Удаление | %s | Время: %.9f\n", nameStruct, mode, deleteTime) + } + + averageTimeInsert /= countRepeat + averageTimeSearch /= countRepeat + averageTimeDelete /= countRepeat + + BenchRes = append(BenchRes, csvwriter.BenchmarkResult{ + Structure: nameStruct, + Mode: mode, + Operation: "Вставка (среднее)", + Time: averageTimeInsert, + }) + BenchRes = append(BenchRes, csvwriter.BenchmarkResult{ + Structure: nameStruct, + Mode: mode, + Operation: "Поиск (среднее)", + Time: averageTimeSearch, + }) + BenchRes = append(BenchRes, csvwriter.BenchmarkResult{ + Structure: nameStruct, + Mode: mode, + Operation: "Удаление (среднее)", + Time: averageTimeDelete, + }) + + fmt.Printf("%s | Вставка | %s | Время (среднее): %f\n", nameStruct, mode, averageTimeInsert) + fmt.Printf("%s | Поиск | %s | Время (среднее): %f\n", nameStruct, mode, averageTimeSearch) + fmt.Printf("%s | Удаление | %s | Время (среднее): %f\n", nameStruct, mode, averageTimeDelete) + + csvwriter.AppendRaw(BenchRes) +} + +func isSorted(data []ds.MyData) bool { + for i := 0; i < len(data)-1; i++ { + if data[i].Name > data[i+1].Name { + return false + } + } + return true +} + +func Test(nameStruct string, factory StructureFactory) { + data := GenerateTestData() + + // fmt.Println("items", isSorted(data.Items)) + // fmt.Println("items sort", isSorted(data.ItemsSorted)) + + testForData(nameStruct, "Случайный", factory, data.Items, data.Search, data.ToDelete) + + testForData(nameStruct, "Отсортированный", factory, data.ItemsSorted, data.Search, data.ToDelete) + +} + +func main() { + + csvwriter.CreateEmptyCSV("results", "benchmarks.csv") + + fmt.Println("============= Начало тестов =============") + + Test("Связный список", NewLinkedList) + Test("Хеш таблица", NewHashTable) + Test("Бинарное дерево поиска", NewBinSearchTree) + + // fmt.Println("User_0001" < "User_00100") + // fmt.Println(isSorted(dg.RecordsShuffled(10000))) +} diff --git a/stepushovgs/data-structures/source/tests/test_bst/main.go b/stepushovgs/data-structures/source/tests/test_bst/main.go new file mode 100644 index 0000000..f5e5ccb --- /dev/null +++ b/stepushovgs/data-structures/source/tests/test_bst/main.go @@ -0,0 +1,50 @@ +package main + +import ( + "bufio" + "fmt" + "os" + ds "source/pkg/data_struct" + bst "source/pkg/structures/bin_search_tree" +) + +const ( + countNumbers = 64 +) + +func pressEnterToContinue() { + fmt.Print("Нажмите Enter для продолжения...") + bufio.NewReader(os.Stdin).ReadBytes('\n') +} + +// isInArr проверяет, содержится ли target в срезе arr[:len] +func isInArr(arr []int, length int, target int) bool { + for i := 0; i < length; i++ { + if arr[i] == target { + return true + } + } + return false +} + +func main() { + fmt.Println("hello world!") + + head := bst.NewBinSearchTree() + + for i := 1; i <= 20; i++ { + name := fmt.Sprintf("User_%02d", i) + phone := fmt.Sprintf("Phone_%02d", i) + head.Insert(*ds.NewData(name, phone)) + } + + head.BstInorderTraversal() + + head.Delete("User_05") + fmt.Println("Удаляем User_05") + + head.BstInorderTraversal() + + fmt.Println(head.Search("User_07")) + +} diff --git a/stepushovgs/data-structures/source/tests/test_csv_writer/main.go b/stepushovgs/data-structures/source/tests/test_csv_writer/main.go new file mode 100644 index 0000000..db06963 --- /dev/null +++ b/stepushovgs/data-structures/source/tests/test_csv_writer/main.go @@ -0,0 +1,19 @@ +package main + +import ( + "fmt" + csvwriter "source/pkg/csv_writer" +) + +func main() { + // Простой способ + results := []csvwriter.BenchmarkResult{ + {Structure: "HashTable", Mode: "Chaining", Operation: "Insert", Time: 0.001234}, + {Structure: "LinkedList", Mode: "Singly", Operation: "Search", Time: 0.005678}, + {Structure: "BSTree", Mode: "Recursive", Operation: "Delete", Time: 0.003456}, + } + + if err := csvwriter.AppendRaw(results); err != nil { + fmt.Printf("Ошибка: %v\n", err) + } +} diff --git a/stepushovgs/data-structures/source/tests/test_ht/main.go b/stepushovgs/data-structures/source/tests/test_ht/main.go new file mode 100644 index 0000000..2920570 --- /dev/null +++ b/stepushovgs/data-structures/source/tests/test_ht/main.go @@ -0,0 +1,90 @@ +package main + +import ( + "fmt" + + // hash_table "hash-table-task/hash-table" + + ds "source/pkg/data_struct" + ht "source/pkg/structures/hash_table" +) + +/* + +1. Сконструировать и реализовать свою хеш таблицу + +- изначальный размер 8, коэф-т загрузки 0.75 + +- Преобразование подаваемого данного в индекс с помощью хеш функции(в ручну) пример: полиномиальный хеш + +- Коллизии обрабатываются методом цепочек, каждая корзина таблицы - список в котором хранятся пары значений key-value + +- При превышении коэф-та загрузки происходит перехеширование таблицы, размер увеличивается вдвое, все пары заново вставляются в таблицу. + +2. Читаем текстовый файл, разбивает на слова, приводим к нижнему регистру, подсчитываем повторения каждого слова: key - слово, value - кол-во повторений + +- На вывод 10 самых встречающихся слов, для каждого слова выводим: ind(hash), key, value +- Текст - первая глава, первые три стиха Евгений Онегин + +*/ + +func main() { + fmt.Println("hello world") + head := ht.NewHashTable(8, 0.75) + + for i := 1; i <= 40; i++ { + name := fmt.Sprintf("User_%02d", i) + phone := fmt.Sprintf("Phone_%02d", i) + head.Insert(*ds.NewData(name, phone)) + } + + head.Print() + + head.Delete("User_05") + fmt.Println("Удаляем User_05") + + head.Print() + + fmt.Println(head.Search("User_07")) + + // Чтение всего файла + + // const filePath = "../data/onegin.txt" + // // const filePath = "../data/onegin_full.txt" + + // data, err := os.ReadFile(filePath) + // text := string(data) + // if err != nil { + // fmt.Println("Ошибка чтения файла:", err) + // return + // } + // fmt.Println(text) + + // text = strings.ToLower(text) + + // // Разбиение на слова (разделители: пробелы и переводы строк) + // re := regexp.MustCompile(`[\p{L}\p{N}-]+`) + // words := re.FindAllString(text, -1) + + // fmt.Printf("Найдено слов: %d\n", len(words)) + // for i, word := range words { + // fmt.Printf("Слово %d: %s\n", i+1, word) + // } + + // hashTable := ht.NewHashTable(8, 0.95) + + // for i, word := range words { + // fmt.Printf("%d : %s\n", i, word) + // hashTable.Put(word, 1) + // } + + // fmt.Println("\nХеш таблица текста: ") + // hashTable.Print() + + // // fmt.Println("Отсортированные ячейки таблицы: ") + // // hashTable.PrintSort() + + // fmt.Println("\nСамые часто встречающиеся слова: ") + + // // hashTable.PrintMostPopularWords(10) +} diff --git a/stepushovgs/data-structures/source/tests/test_ll/main.go b/stepushovgs/data-structures/source/tests/test_ll/main.go new file mode 100644 index 0000000..3420389 --- /dev/null +++ b/stepushovgs/data-structures/source/tests/test_ll/main.go @@ -0,0 +1,52 @@ +package main + +import ( + "bufio" + "fmt" + "os" + ds "source/pkg/data_struct" + + // rs "source/pkg/resulter" + ll "source/pkg/structures/linked_list" +) + +func isInArr(arr []int, length int, target int) bool { + for i := 0; i < length; i++ { + if arr[i] == target { + return true + } + } + return false +} + +func Razdelitel() { + for i := 0; i < 20; i++ { + fmt.Print("-") + } + fmt.Println() +} + +func pressEnterToContinue() { + fmt.Print("Нажмите Enter для продолжения...") + bufio.NewReader(os.Stdin).ReadBytes('\n') +} + +func main() { + fmt.Println("hello world!") + + head := ll.NewLinkedList() + + for i := 1; i <= 20; i++ { + name := fmt.Sprintf("User_%02d", i) + phone := fmt.Sprintf("Phone_%02d", i) + head.Insert(*ds.NewData(name, phone)) + } + + head.PrintAll() + + head.Delete("User_05") + + head.PrintAll() + + fmt.Println(head.Search("User_07")) +}