750 lines
267 KiB
Plaintext
750 lines
267 KiB
Plaintext
|
|
{
|
|||
|
|
"cells": [
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 224,
|
|||
|
|
"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": 225,
|
|||
|
|
"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": 226,
|
|||
|
|
"id": "c691c40e",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/html": [
|
|||
|
|
"<div>\n",
|
|||
|
|
"<style scoped>\n",
|
|||
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|||
|
|
" vertical-align: middle;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe tbody tr th {\n",
|
|||
|
|
" vertical-align: top;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe thead th {\n",
|
|||
|
|
" text-align: right;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"</style>\n",
|
|||
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|||
|
|
" <thead>\n",
|
|||
|
|
" <tr style=\"text-align: right;\">\n",
|
|||
|
|
" <th></th>\n",
|
|||
|
|
" <th>Structure</th>\n",
|
|||
|
|
" <th>Mode</th>\n",
|
|||
|
|
" <th>Operation</th>\n",
|
|||
|
|
" <th>Time</th>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </thead>\n",
|
|||
|
|
" <tbody>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>0</th>\n",
|
|||
|
|
" <td>Связный список</td>\n",
|
|||
|
|
" <td>Случайный</td>\n",
|
|||
|
|
" <td>Вставка</td>\n",
|
|||
|
|
" <td>0.047621</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>1</th>\n",
|
|||
|
|
" <td>Связный список</td>\n",
|
|||
|
|
" <td>Случайный</td>\n",
|
|||
|
|
" <td>Поиск</td>\n",
|
|||
|
|
" <td>0.003505</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>2</th>\n",
|
|||
|
|
" <td>Связный список</td>\n",
|
|||
|
|
" <td>Случайный</td>\n",
|
|||
|
|
" <td>Удаление</td>\n",
|
|||
|
|
" <td>0.005502</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>3</th>\n",
|
|||
|
|
" <td>Связный список</td>\n",
|
|||
|
|
" <td>Случайный</td>\n",
|
|||
|
|
" <td>Вставка</td>\n",
|
|||
|
|
" <td>0.048707</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>4</th>\n",
|
|||
|
|
" <td>Связный список</td>\n",
|
|||
|
|
" <td>Случайный</td>\n",
|
|||
|
|
" <td>Поиск</td>\n",
|
|||
|
|
" <td>0.003505</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>...</th>\n",
|
|||
|
|
" <td>...</td>\n",
|
|||
|
|
" <td>...</td>\n",
|
|||
|
|
" <td>...</td>\n",
|
|||
|
|
" <td>...</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>193</th>\n",
|
|||
|
|
" <td>Бинарное дерево поиска</td>\n",
|
|||
|
|
" <td>Отсортированный</td>\n",
|
|||
|
|
" <td>Поиск</td>\n",
|
|||
|
|
" <td>0.007040</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>194</th>\n",
|
|||
|
|
" <td>Бинарное дерево поиска</td>\n",
|
|||
|
|
" <td>Отсортированный</td>\n",
|
|||
|
|
" <td>Удаление</td>\n",
|
|||
|
|
" <td>0.013611</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>195</th>\n",
|
|||
|
|
" <td>Бинарное дерево поиска</td>\n",
|
|||
|
|
" <td>Отсортированный</td>\n",
|
|||
|
|
" <td>Вставка (среднее)</td>\n",
|
|||
|
|
" <td>0.303134</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>196</th>\n",
|
|||
|
|
" <td>Бинарное дерево поиска</td>\n",
|
|||
|
|
" <td>Отсортированный</td>\n",
|
|||
|
|
" <td>Поиск (среднее)</td>\n",
|
|||
|
|
" <td>0.007562</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>197</th>\n",
|
|||
|
|
" <td>Бинарное дерево поиска</td>\n",
|
|||
|
|
" <td>Отсортированный</td>\n",
|
|||
|
|
" <td>Удаление (среднее)</td>\n",
|
|||
|
|
" <td>0.013591</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </tbody>\n",
|
|||
|
|
"</table>\n",
|
|||
|
|
"<p>198 rows × 4 columns</p>\n",
|
|||
|
|
"</div>"
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
" Structure Mode Operation Time\n",
|
|||
|
|
"0 Связный список Случайный Вставка 0.047621\n",
|
|||
|
|
"1 Связный список Случайный Поиск 0.003505\n",
|
|||
|
|
"2 Связный список Случайный Удаление 0.005502\n",
|
|||
|
|
"3 Связный список Случайный Вставка 0.048707\n",
|
|||
|
|
"4 Связный список Случайный Поиск 0.003505\n",
|
|||
|
|
".. ... ... ... ...\n",
|
|||
|
|
"193 Бинарное дерево поиска Отсортированный Поиск 0.007040\n",
|
|||
|
|
"194 Бинарное дерево поиска Отсортированный Удаление 0.013611\n",
|
|||
|
|
"195 Бинарное дерево поиска Отсортированный Вставка (среднее) 0.303134\n",
|
|||
|
|
"196 Бинарное дерево поиска Отсортированный Поиск (среднее) 0.007562\n",
|
|||
|
|
"197 Бинарное дерево поиска Отсортированный Удаление (среднее) 0.013591\n",
|
|||
|
|
"\n",
|
|||
|
|
"[198 rows x 4 columns]"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 226,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"csv_path = \"../results/benchmarks.csv\"\n",
|
|||
|
|
"\n",
|
|||
|
|
"data = pd.read_csv(csv_path)\n",
|
|||
|
|
"data"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 227,
|
|||
|
|
"id": "a3737f45",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/plain": [
|
|||
|
|
"(np.float64(0.003486), np.float64(0.048099), np.float64(0.006181))"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 227,
|
|||
|
|
"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": 228,
|
|||
|
|
"id": "5434d260",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/plain": [
|
|||
|
|
"(np.float64(0.003512), np.float64(0.048028), np.float64(0.005869))"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 228,
|
|||
|
|
"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": 229,
|
|||
|
|
"id": "3deed9a5",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/plain": [
|
|||
|
|
"(np.float64(0.0), np.float64(0.002007), np.float64(0.0))"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 229,
|
|||
|
|
"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": 230,
|
|||
|
|
"id": "490e5c46",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/plain": [
|
|||
|
|
"(np.float64(0.00015), np.float64(0.001794), np.float64(5e-05))"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 230,
|
|||
|
|
"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": 231,
|
|||
|
|
"id": "9d7274ab",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/plain": [
|
|||
|
|
"(np.float64(0.013959), np.float64(0.301662), np.float64(0.007347))"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 231,
|
|||
|
|
"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": 232,
|
|||
|
|
"id": "92a545c9",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/plain": [
|
|||
|
|
"(np.float64(0.013591), np.float64(0.303134), np.float64(0.007562))"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 232,
|
|||
|
|
"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": 233,
|
|||
|
|
"id": "b2e93d6e",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"countUsers = 10_000\n",
|
|||
|
|
"countRepeat = 10\n",
|
|||
|
|
"countRandomSearch = 200\n",
|
|||
|
|
"countNotExitstSearch = 100\n",
|
|||
|
|
"countDeletes = 500\n",
|
|||
|
|
"\n",
|
|||
|
|
"\n",
|
|||
|
|
"ll_col = 'blue'\n",
|
|||
|
|
"ht_col = 'orange'\n",
|
|||
|
|
"bst_col = 'green'\n",
|
|||
|
|
"\n",
|
|||
|
|
"iterations = range(countRepeat)"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 234,
|
|||
|
|
"id": "208784a5",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABWEAAAJKCAYAAABNpYc9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAA4uxJREFUeJzs3QeYFEX6x/GXnIMiKFFBghnFrIhizhgxg+H0TCeKomAAPQN6JlDPhKinKAbOcHgqehhA8PQMqIiSRTEQJOc0/+dX+6+xZ3Zmd3Z3end2+vvh2WfZnp6erk5T/fZbVVVisVjMAAAAAAAAAAChqBrOYgEAAAAAAAAAQhAWAAAAAAAAAEJEEBYAAAAAAAAAQkQQFgAAAAAAAABCRBAWAAAAAAAAAEJEEBYAAAAAAAAAQkQQFgAAAAAAAABCRBAWAAAAAAAAAEJEEBYAAAAAAAAAQkQQFgAAAABQanPmzLFbb721olcjkj766CN79tlnK3o1AAAZqBKLxWKZzAgAqDi///673X///TZx4kTbcsstrX79+lazZk0799xzbc8997QzzjjDRo4cWdGrCQAAImb58uV25pln2nPPPWcNGza0Dz74wJ544gmbPHmyffXVV9arVy/7xz/+kfCev//9726eSZMmWevWre3oo4+2Rx991Cravffeay1atHD1qmQbNmywv/71r7Z+/XrbfPPNXfn69u1rnTt3Tpjvt99+s1tuucWVa+PGjfbzzz/bbbfdZltssUXCfJ9++qk99thjtv3229u8efOsQYMGdsMNN1i1atUS5hsxYoR9/PHH1q5dO5s2bZodcsgh1rNnz4R5Bg4caPvvv78dccQRWd0eAIDsIggLADnunXfesbPOOsuuvPJKu/rqq6127dpuum4CVKn/9ddfbdiwYcblHAAAlDcFIk855RTbb7/9EqY//fTTLkPzvffeszfeeMOOOeaYQu89/PDDbdSoUS54W5FWrVplQ4cOtZtuuskFh/WQO9mFF15oHTt2tH79+rm/FyxYYAcccICNHj3aOnTo4KatW7fOdt99dxs+fLjttddebtq4ceOsT58+Luhao0YNN23q1Kl2/PHHu2mNGjVy0xTgVTBWAWpPge0XXnjBfYZs2rTJjjzySPvTn/6UEIhVsPfEE0+0559/3j2oBwDkJrojAIAcpmySY4891lXMlR3hA7CiirwyLRYuXFih6wgAAKJpypQp9vXXXxcKwAYzS5s3b26XXHKJy5hNpvdVdAD2wQcftAsuuMDWrFnjgpmpKOtV2bwXX3xxfFrTpk3tqKOOskGDBsWnKYBbt27deABWunXr5n4/9dRT8WkK9p5wwgnxAKxcdtll9vjjj7sArc+8VcD30ksvjc9TtWpVN58eyisg6yl79vTTT7ebb745C1sEABAWgrAAkKOUlaHmfdttt527eUlHmRtVqlQp13UDAAC4++67EwKTyRo3bmwPPfSQ/fTTT3bddddZLvrLX/7iunQ677zz0s7z8ssv29Zbb+26DAhSVwSvvfaaa50kL774ou2yyy6F3q/5tAxRsPdf//pXofmaNGliLVu2dJnBMn78eNfaKXk+LWvu3Lmui4KgU0891V599dWUwW4AQG4gCAsAOUoZE6p8qyuCoqjPsVQVfgAASiOYYRelz0YBdW+UyX5Q0/t//vOfro/Sopx00kl28sknuz5fFVisjL744gvbbLPNCk1X4HT16tX27bffFjvf//73P/d/zbt27dpi59OyJHk+zSN+vmALqd12281ef/31MpQUABAmgrAAkKPefPNN93ufffYpdt6//e1v7vfYsWNdEzhV0DXt9ttvd10ZXHHFFa5bgy+//DLhfWp2p5ui++67z/Uv26NHj/jneo888ogb/EvZtspiUdNC/VbfbmqeJ8q60Ocpg0PN8PSZCiDr5uywww5z7z3nnHNszJgx8eW+9dZbLuvkzjvvdM3ntExlh4iyQLR8vU99nv3nP/9xzfP69+/vmuLtsMMObp11o6jf+rt69epuYIrvvvvOdePQu3dv934tx2efyCeffOL6etO2ueOOO1yzviVLlhS5fZctW+bKtNVWW7mBNe666y6755573I/6YPPrqT7vSroPROun5oaaX2UYMGCArVixIv76k08+6Zps6nPUr5zKoJuzq666yk3Ta2oCqQHc1OxR2/Phhx92+0p92GmAEWUhyYQJE+zPf/6ze9/BBx/syqDtoHVTM8hkWo76I1a20/XXX+/KoyaSQdp+6hpD+19l1TL1ufoM9fenPu00MIk+R1lErVq1cmXVcaP+Art27erm1Tb673//6/oRVMaRmmvq8zQAyjbbbOOOFfU9qP7ufvjhh3gQQNtM20LlVT952g9B33//vV1zzTVuUBN9rtZPQYHgftM8+jw16VTffipvqmap7777rjuW9V4d2zrGdayr3Dr2tQ30GUuXLnXzKztKZdDxrWVqPbRNky1evNgdAzputS1VFvWjKJluj+B5o4FwtK7Tp093x4PKFTxv0inp8aGHRbpu6NzU+mgenxGmz7zooovc+dK9e3e3TJVfI6grkyvYbFbZW0OGDHHz6nhV+YPrqeuS9pWWob4ntV5ajvpG1HtTnSvKbtO5EmwxoGuZ9pmU9NqRivpf1DGu+XXMa73VNFmD46gfyExp0EU1Tda5pmux1leD+8hBBx3kmjwPHjzYNZnWZ+m6o+193HHHudfVj6QCYbpGKRtO20HroWuJ1i9YDp1j2sZazr777utGVhddc7SfatWq5Y4rHf9+G2lf6vjTNhJ/7Tn00EPjx2km+7skn60y63zae++9XaahPl8/mh7sMzN4bdHAldpOydd07Yuzzz7bfa4GgHrppZcy2i/K4Nxjjz3s/PPPd8ec9o0CXeoXVJ/pj1GdZzp+tb20bXSN+OWXX4pcx5UrV7r9pOUHr386ZvV/TdNrmkfzan/rvVqGrgPKhEz+rtT3apCuj7oeaaApXSe0/nqfrkH+c9WnqebTNtfATjofVN7kAF8qWlc9CE4VTEy1LZUVq2u0/66vTPQdGuwSyqtTp078dR13OpbTzafvBX3v+e/jdPP519PNF/zMZDqvVA8BAOQoDcwFAMg9O+ywg+7uYt99912J3rdu3bpY48aNY7vuumvst99+i09/7bXXYnXr1o198skn8Wn33ntvbP/9949t2LDB/f3jjz/G6tWrFxs/fnzCMocPH+7WZdOmTfFpt9xyS6x58+axFStWxKedc845bnlB7777rnvvzJkz49Neeuml2AEHHODW1evTp0/s/PPPj/89duxY977p06cnLK9ly5axm266KWGa/m7Tpk3CtLfeesu9X8vxPvroo9iOO+4YW7ZsWXza/fffHzvkkENimVD5DjzwwIRp7733XqHylWQf3HPPPbGTTjoptnHjxvi0V199NbbXXnvFVq9eXeQ+0LGhaXpN9Fm77bZbwnaVs846y5Xb02fpfU8++WR82qxZs2JVq1aNvfLKK/Fpl19+eezKK69MWJa21wknnJCwHl7//v0Tlpe8/UX7vVevXgnTrrvuOjev3wZPPfVU7P3334+/rm2ube/dfPPNsdmzZ7t1OO6442J///vf46+tXLnSHSMffvhhofW78cYbCx1fwf0mrVu3jt1www2xoug9eq+O7SAd+8H11Podf/zxsSFDhiTMp2P9iiuuiP+t43GnnXaK3X777fFpL7/8sjtW5syZk/H2CJZL29+bP39+rH79+oXOm3QyPT4GDhwY22OPPWJLlixxfy9fvtydh74cvXv3js+rMgT3sdZX6y2fffZZbOutt45NnTrV/b1+/Xp37gS3R3C765zztJ+rVasW+/TTTwudK/6ztB8uuuii2AMPPFDouM302lGUVNv8H//4h9vm2n/Fefvtt2NNmzaNffvtt/FpuiYcdthh7v/nnXdewnYLrpvKo9e9o48+OtakSZPYxIkT49N++OEHdz168MEH49N0zd9mm21iV111VcK6aNsOHjy40DbSeeHp+qL1e/HFFxPmy3R/l+SzL730UvedFDzuFi9eHGvbtm3s6quvLnRt0bWupOd
|
|||
|
|
"text/plain": [
|
|||
|
|
"<Figure size 1400x600 with 2 Axes>"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"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": 235,
|
|||
|
|
"id": "7de42c9d",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABWEAAAJKCAYAAABNpYc9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAA6vlJREFUeJzs3QeYE1XbxvGH3qQJrPSOKNixoEhTUWwviogdsRdQEAUrYq9IsaMi9oKI+uqnKCIKdsWuKEpvAqKw9Lb5rvvsO3Eym93N7ia72eT/81pDJpPJnJnJ5Mwz5zynTCgUChkAAAAAAAAAICHKJmaxAAAAAAAAAAAhCAsAAAAAAAAACUQQFgAAAAAAAAASiCAsAAAAAAAAACQQQVgAAAAAAAAASCCCsAAAAAAAAACQQARhAQAAAAAAACCBCMICAAAAAAAAQAIRhAUAAAAAAACABCIICwAAAAABoVDIbrjhBlu5cmVJrwqSxNatW23o0KG2ZcuWkl4VAEApVL6kVwAAUPqsXr3aRo8ebZ9++qntsssuttNOO1nFihWtf//+dsABB9hpp51mL774YkmvJgAAhXbjjTdax44dLSMjw7Kysqxfv362adMmmzx5spv2ww8/uN9Az08//WTDhg2zDz74wD0/7LDD7J577rE99tijRNZ/xowZ9vjjj1uZMmXst99+c7/Pt99+u9WsWTNivilTptirr75qu+++uy1YsMB23XVXGzhwYI7l6Xd/8eLF1qhRI/v555/trLPOsu7du1uyuOyyy1z945BDDsnx2vr1693+rF69ulWpUsVtjxEjRljz5s0j5pszZ47de++91qZNG8vMzHT7+9Zbb7WqVau611XXUbm1fbRtAQAoiDIh3eIFACBG7733np1xxhk2ePBgu/LKK61y5cpu+rZt2+y2226z5cuXuwsTfl4AAKXVt99+a4899pg98sgjOV5T4PGjjz6yk046yV555ZUcr+t95cuXt3PPPddKytdff20TJkyw+++/38qVK2cbNmywrl272o4dO+yTTz4JBxVVjquuusrdVK1QoYKbpvVWQFYtPj0K3i5btsweeugh91zByU6dOtkDDzzgHgtr1apVVq9evSKV9Z9//rFbbrnFxowZY9OnT7du3brlmKdHjx524YUX2sknn+yeKwh7/PHH2+eff24777xz+AbzgQce6ILozZo1c9OeeeYZe/nll+3//u//IpY3atQoa9mypZ1wwglFWncAQHohHQEAIGYffvihHXfcce5i5/rrrw8HYEUXbzfffLP99ddfJbqOAAAU1aBBg9yNxmgUzLzooots0qRJ9vrrr+d4XS1JFaArSffdd5+NHDnSBWClWrVq7jf6u+++c0FijwKtCrp6AViv7DfddJOtWbPGPdfvuoKw/taxak169tlnRwRqC+Phhx8u0vvVmjVaq12/t99+23788Ufr06dPeFrbtm2tffv2bht57r77btt///3DAVjRTecvvvjC3YD20/7XZ2/cuLFI6w8ASC8EYQEAMdGFxumnn2677babXXLJJbnON3bsWNf1EQCA0kitQ2vUqGGtW7fOdR4F7Bo3bmyXXnppOFiZTP773/+61p9+Sq3g3VCV+fPn21dffWV77bVXxHxKn6Ccp17rzzfffNO2b9/ufv/99t57b/vss89s6dKlhV7PovaaUWD5+eeft169euU6j1qy7rnnnjnqJlp/f0tmzRfcFgpia3sEWzwrqH344YfbSy+9VKT1BwCkF4KwAICYqFujUg2oVUhemjRpkuMiBgCKi4I6yt+Zbp+tbuaIzzZSUO+II47Icx4FaZWqQL+L6s6fbNQSV930/ZTP1O+bb75xj7Vr184ReFTeWAVovflq1aqVI4hZp04d9+jNl6y0/sEyeuv/xx9/uCC6UhEsWrQo1/milVE5f1944YWErTcAIPUQhAUAxETd+fwtafKigUhk2rRpLr+aLmA0Td0Zlcrg8ssvd2kNlHMveIH86KOPulxryi+rli3e53p00avBRXQxePXVV7sul3o89thj3aAosm7dOvd5GjxEee/0mbpQ1sAjahmk92pgjXfffTe83HfeecfOOeccu+uuu1w3TC1z8+bN7jV1OdXy9b6+ffva+++/7/LJXXPNNVa2bFlr166dW2cFYPSo58oHqEFAZs+e7Vodqdum3q/l+FvUqJujBjTTtrnjjjtswIAB+baq0mAhKlP9+vVdLjutswYSOf/88123Uu/Cu6Db31t/de1UF009Pvnkk+HXH3zwQevQoYPrhvrxxx/nWC+VRRfu2j9e3kBRHkG1ntYo49pfKq+2i/z66682fPhwd9GvgVD0umg99FzT9fovv/xiU6dOdftN21Hrr/2yYsUKV34FRLS/Vc61a9fmuu00mIy6z2q56naqcupP71OrKE3X6+q66tH+Ums3zaN9eu2117pBXjzaRhoIRuulbrzaDrrov+KKK9w0vfbEE0+E59f+0fJ0TKgVl8rsDeSj92r/6H0HH3ywjR8/3k3X8atjWftSAR/lYI71OxPLtth3333ddtC27N27t1tWrC3U8irPU0895br2ah/q+NPxqoFw9DlDhgxxg/ppICB9l7S/9VzH1nXXXee6+ip/o7aj8ll6320NkqPBdfSnHJD+41PfR33HNWCS/3jR907Hi3z//fdumm4YaZ1Ex6T2k8qt7avXlVdSrR21jBYtWhTos/WaujrruFQrQh37Ko8GdtJ3VHkw/XQc6z0a+EjbQuXWOcajbaRlaHlaN68L96xZs1yLvKZNm7ptHEvX6JkzZ9oFF1zgjnedN7Tftf+Dx34sx5b/2Ff37C+//NIFqy6++OKIY78g5+TgOUHrGAyeapsec8wx7n26Maj36bhRuTRNAUO10BSVQdP02zVu3LiYjmmdO2PJc6rz0Kmnnuq+p94xnyy0H4LneO+5zuOiQbbEn1rIo/O897oec5vHv5xkFcv6x7ot/HRMKb+uWg0DABATDcwFAEB+2rVrp4hMaPbs2QV639atW0O1atUK7bPPPqE///wzPP31118PVa1aNfTFF1+Ep913332hTp06hbZv3+6eL1q0KFStWrXQzJkzI5Y5fvx4ty5ZWVnhaTfffHOoQYMGofXr14ennXXWWW55flOnTnXvnTt3bnjaxIkTQ507d3br6hk0aFDo3HPPDT+fNm2ae9/vv/8esbxGjRqFhg8fHjFNz5s2bRox7Z133nHv13I8H3/8cah9+/ahzMzM8LTRo0eHDj/88FAsVL4uXbpETDvssMNC//nPfwq1/QcOHBgaOnRo+PmOHTtC++23X+iZZ54JT3viiSdCJ5xwQuj000/PsT5PP/10qFmzZm7/eFatWhVq06ZN6LvvvgtP+/bbb0P16tULrV69OjytSZMmoeuvvz5ieXqu6X7ab9qOH3zwQXjapk2b3Odqe8RKyx0xYkTEtBtvvDHH540cOTLUu3dvty08r732WujAAw90n5vXManviqb5t4f29R577BG6/fbbw9NeeeUVty8WLlzonuuzgu9TeY8//vjQypUrI9Yv1u9MfttCZfesWbPGHTOjRo3K9735lWfChAmh6dOnh1/r2rVrxH666aabQvPnzw9/D1Xu6667Lvy6tqe2/yGHHBLasmVLePoNN9zgjqFt27ZFrM8xxxwTMc07Xvzfu6eeesp9t9etWxeeNmDAgIjnwe3fv3//An/2l19+6ZbTr1+/iOmDBw9234m///47PK1Xr16hYcOGhZ9PmjQplJGRETGPvPXWW26Z3vdWy+3WrVtoxYoVoYLQecF/3op27Bf0fOwvo/4d3IYFOSfndk7wy+2cfNVVV4V22WWX8Hn1l19+CZ100knhcuRH79Ny/b8lQf5zh76TderUCbVq1Sq0ceNGN03HvP+4z8v333/vzvux/o0ZM8bti8I4++yzQzVq1AgtW7bMPb/11ltdWb3voJ9+w3r06OH+rd8knWOD5s2b597v//4XVPA8XFja3lqXaNu9XLlyruxBTz75pHvPJ5984o5r/VvnrCB9hytUqBD1c3Uu+PHHH+NSBgBA6qMlLAAgoTTYh1p
|
|||
|
|
"text/plain": [
|
|||
|
|
"<Figure size 1400x600 with 2 Axes>"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"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": 236,
|
|||
|
|
"id": "0fd42f30",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABWEAAAJKCAYAAABNpYc9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAA+3pJREFUeJzs3QecE9Xax/GH3psISi/SLIjlWhEpKqLXK4qI6FXs9apgoVkARUWsoGLvDQuo98WCXUGsYBcLvQtIB+nk/fzP3hMm2WQ3u2xCNvl9/axLJjOTOTOT2WeeOaVEKBQKGQAAAAAAAAAgKUomZ7UAAAAAAAAAACEJCwAAAAAAAABJRBIWAAAAAAAAAJKIJCwAAAAAAAAAJBFJWAAAAAAAAABIIpKwAAAAAAAAAJBEJGEBAAAAAAAAIIlIwgIAAAAAAABAEpGEBQAAAAAAAIAkIgkLAAAAAMXMxo0b7ZprrnG/kb+HH37Yvvvuu529GQCALEYSFgCw0yxbtsxuuOEG69Spk51++ul24YUX2n/+8x/75ptv3PuaBgAAcrvsssvs3//+t5UrV84WL15sZ555ph177LFWokQJ23PPPW39+vUR83/88cd21FFHWenSpa1q1ap24oknuuV2hoULF9pBBx1kb731lq1cudK9fvrpp+3iiy/ONe/zzz/vYoO7777bvf/KK6/kmmfLli02aNAgGzhwoN1555129tln2w8//BAxj2KMYcOG2YIFC5JaNgAA4ikRCoVCcd8FACBJ3nvvPXfz2KdPH1eTp3z58m765s2b7ZZbbrFFixbZY489ZvyZAgAg0n//+1/75Zdf7LrrrouYPnv2bDv//PPto48+smuvvdYlJKNpmaOPPto9AN1ZtJ1NmjSJmLbXXnvZ+PHjrUGDBuFpL7zwgr300ks2btw493rbtm3WpUsXu+CCC6xHjx4RCdYWLVpY37593eulS5dau3bt3HLNmzcPz6cErPbL6NGjU1BKAAAikYQFAKTcJ598Yp07d7aRI0fapZdeGnOebt262euvv04SFgCAgA0bNtihhx5qn376qVWrVi1XclN/Y19++WV7//337csvv7R//OMfEfOoxmmHDh2scePGKd7yyO1U4rRRo0au5u5hhx3mavKWLVs2onZrw4YN7YknnrDjjjsuIgF9+eWX25w5c6xkyZL2888/2wEHHOBa11SpUiU831VXXeVq+r744osRn33RRRe5WsAnnHBCikoLAEAOuiMAAKTU33//bWeccYa1atUqbgJWlKDVjRkAANhOCdYjjjgiVwI26JFHHrEKFSq4WrFqYZKO2rZta48//rhr9XLeeedFJGBl4sSJrlXMvvvuGzG9TZs2Nn/+fPviiy/c61dffdUlc4MJWD/fG2+8kav8SuDecccdSSsXAADxkIQFAKTUU0895W6q1BVBXtQcMfrGCyhO1GwWiKba/Turhv/O/OytW7fulM8tThLdR2qir+4E8qIapOr/9Mcff7Thw4dbcfTtt9+63zVq1IiYXrNmTffb9x+v+aLn8fOpX1x12xCk2OLXX3+1efPmJXHrAQDIjSQsACCl3n77bfdbTSnz42uqfPjhh3bwwQe7GypNu/XWW+3mm2+2K6+80jUnjB7tWDeyGgX5nnvucf3Ldu3aNfy53kMPPeQGBVFt2/79+7sBP/T7n//8p2vaKGvWrHGfV69ePatYsaL7TCWQx44da8ccc4xb9qyzzrJ33303vN533nnHzj33XLv99tttyJAhbp1qOipjxoxx69dy6svugw8+sN9//90GDBjgmlSqPzxts5Ik+q3XGkBFg43ohlFNTDXYiJbXelT7x/vqq6/snHPOcfvmtttuc4OYaLCTvKxevdqVaffdd7dddtnFbbP6D1Rfe6qVtGLFikLtf7/9qm101113ud9PPvlk+P0HHnjADjzwQFdL67PPPsu1XSqLanjp+IwaNSo8XQO3qPa0BnPT8VJ5tV/kt99+sxtvvNFKlSrl+v/T+6Lt0GtN1/tTp051TXR13LQftf06LmqyqvJrsBodb5Vz1apVcfedmvhq4DjfjNaXY+3atdaxY0c3UM7VV18dTqroWNx0001u3dp32i9qiqvl1TWHkiqe9rdqgutYqIwaaGbTpk25tkGD0+g8VNcdWp+2Wc2LK1eu7MqqprqiZXUOqWmu9ouO75tvvlngczy4j/fee2+3b/3x1Lka3Me+KbE+r1evXu4zNH+/fv3cOnVsH3zwwTzPz0mTJrlBeDS/+q5UGXVu65g9+uijlijVmFMZ1AR56NChdu+999rkyZPde/qO7rPPPu7Y6Ec18fbbbz+XtNK5pu+f6Dho39apU8fVzrv++uvdPtW1RftMZfX9Tep4abm6devac889F94O9VWpspx66qnu2ASvB2qGrfPSN7XWNLUW8OVU03E1x1ZSTTUb9f7JJ5/sztl//etf7v2CfLauOfpe6FzRuas+QgcPHuze13mybt26iH04bdo0GzFihDuGel/7U99HT4k+ne/af2XKlLH/+7//C18PdW3T+aJtT4TOze7du7sy6Zjre6C+Q7Wt2udz585182kb77vvPrdNmn7SSSe572WQv45qG1RmXW913dX1N3gd1b7TuaWalLvttpvbVq1f1y015de8ut5p/bo+6d+apvf0tyaavs+6LmgeXf9UY1MDUKlcmqYEqbZFtF3+OhBrwKlo+j7rmB1++OEJDdyl+fR3UN/fdPPnn3+6fa3rhPqG7927d/jvpfgkqe8z3tPfjuD7+h09T6z5ghSDqN9cAABSSn3CAgCQKnvttZeqYYV+/fXXAi23adOmUPXq1UP77bdf6M8//wxPf+ONN0IVK1YMffXVV+Fpd999d6ht27ahLVu2uNdz584NVapUKTRx4sSIdT7xxBNuW7Zt2xaedtNNN4Xq1KkTWrt2bXjaWWed5dYX9P7777tlZ8yYEZ72yiuvhNq1a+e21evdu3fovPPOC7/+8MMP3XLTpk2LWF+9evVCN954Y8Q0vW7YsGHEtHfeecctr/V4n332WWjvvfcOrV69Ojzt3nvvDR111FGhRKh8Rx55ZMS0Tp06hU488cRC7f/LL7881Ldv3/DrrVu3hg444IDQs88+G572+OOPh0466aTQGWeckWt7nnnmmVCjRo3c8fGWLl0aat68eej7778PT/vuu+9CtWrVCi1btiw8rUGDBqHrr78+Yn16relBOm7ajx999FF42vr1693nan8kQudX48aNQ1dddVXEdK1z2LBhMZcZMGBA+N8zZ87MdSwXLVrkzoXguXrCCSeELrzwwpjr07LBMmjbdQ56Orf/9a9/hUaNGhWetm7dOvcZn376aYHPcdG+HDRoUMS00047Ldc+VlnLli0bWr58ecT2aJ3BY5sXnTua/8knn4zYbyVLlgy99tpr+S4/f/78UN26dUMvvPBCxHdD57KOt77vWp+n4x/8Hp5zzjnhf99xxx2h0qVLR+zLjRs3hg455JBQ9+7dIz73zDPPDO2///4R0/QdOv744yOm+etBcB8PGTIkdN1110VcR84991y3L2TWrFkR5432qd4v6GfreqX16LM8ratbt26hww8/3JXNO/DAA0MjR44Mv77rrrvctTy4jfLAAw+EypUr5665snLlylCHDh3cOVcQf/zxR8Q50qtXr4jzWq644opQz549w6+/+eabUIUKFULTp0+PmE/HU+d7kK6/0d890Wf8+9//jpj22GOPuXn9/g+el3ovHv/3ZfPmzRHTTz311NC+++4bnv7222+7vxOJ+vHHH0O77rpr3Pd1fjz11FPh1/pbq2Oi77f/W6f3NV8idC3SdybRn/vuuy/iOx/PggUL3HH1f6f99y34XTr//PPdPozmryP+urjHHnuE2rdvn2s+XRs1X/D77+lv1DXXXJPQPgAAoKhQExYAUCyodpVqR2owDdVU8lQTrXXr1q6WW5BqS/naaeraQDWxogfnUO0oCfY9q1pwqgk4Y8aMiPl8jTjPv/brUO0d1T5VLVhtq6fakuqCwdcs8/PHWp9/L/i5wW1bvnx5uMZkcN5LLrnETjn
|
|||
|
|
"text/plain": [
|
|||
|
|
"<Figure size 1400x600 with 2 Axes>"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"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
|
|||
|
|
}
|