2026-rff_mp/stepushovgs/data-structures/docs/src/main.ipynb

755 lines
298 KiB
Plaintext
Raw Normal View History

{
"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": [
"<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.199516</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Связный список</td>\n",
" <td>Случайный</td>\n",
" <td>Поиск</td>\n",
" <td>0.024629</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Связный список</td>\n",
" <td>Случайный</td>\n",
" <td>Удаление</td>\n",
" <td>0.014065</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Связный список</td>\n",
" <td>Случайный</td>\n",
" <td>Вставка</td>\n",
" <td>0.196946</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Связный список</td>\n",
" <td>Случайный</td>\n",
" <td>Поиск</td>\n",
" <td>0.023807</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>373</th>\n",
" <td>Бинарное дерево поиска</td>\n",
" <td>Отсортированный</td>\n",
" <td>Поиск</td>\n",
" <td>0.062731</td>\n",
" </tr>\n",
" <tr>\n",
" <th>374</th>\n",
" <td>Бинарное дерево поиска</td>\n",
" <td>Отсортированный</td>\n",
" <td>Удаление</td>\n",
" <td>0.062908</td>\n",
" </tr>\n",
" <tr>\n",
" <th>375</th>\n",
" <td>Бинарное дерево поиска</td>\n",
" <td>Отсортированный</td>\n",
" <td>Вставка (среднее)</td>\n",
" <td>0.952690</td>\n",
" </tr>\n",
" <tr>\n",
" <th>376</th>\n",
" <td>Бинарное дерево поиска</td>\n",
" <td>Отсортированный</td>\n",
" <td>Поиск (среднее)</td>\n",
" <td>0.060593</td>\n",
" </tr>\n",
" <tr>\n",
" <th>377</th>\n",
" <td>Бинарное дерево поиска</td>\n",
" <td>Отсортированный</td>\n",
" <td>Удаление (среднее)</td>\n",
" <td>0.064886</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>378 rows × 4 columns</p>\n",
"</div>"
],
"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+73799ddwIEB1prrQ+qrfPG2HoKlTp9oNN9zgBjpRuVo+BQaC203zqDzd3qm+/rS++n5Ee//9992+rPdq39Y+rn1d6619X3WgMlatWuXmV5aU1kH7tz5Ty6E6jbZixQq3D2i/VV1qXdSvosRbH8HvjQbH0bLOmDHD7Q9ar+D3piDF3T90wUjHDX03tTyax2eGqcxLL73UfV/U/6I+U+uvkdWV0RW8hVZZXEOGDHHzan/V+geXU8clbSt9hvqi1HLpc9RXot4b67uiwXb0XQneOaBjmbaZFPfYEYv6Y9Q+rvm1z2u5dZuyBsxRv5Dx0kCMuk1Z3zUdi7W8GvBHjjrqKHf7swYTuvjii11ZOu6ovk899VT3um6fVjBMxyhlxaketBw6lmj5guuh75jqWJ9z2GGHuRHXRcccbaeKFSu6/Ur7v68jbUvtf6oj8ceeY445JryfxrO9i1O21lnfp0MOOcRlHKp8PTQ92Idm8NiiwSxVT9HHdG2L888/35WrQaFeffXVuLaLMjkPPPBAu+iii9w+p22jYJf6CVWZfh/V90z7r+pLdaNjxMKFCwtdxnXr1rntpM8PHv+0z+r/mqbXNI/m1fbWe/UZOg4oIzL6t1K/q0E6Pup4VL9+fXec0PLrfToG+XLVx6nmU53rlnx9H7S+0UG+WLSsuhgcK6AYqy6VHatjtP+tzwT6vf7jjz/C/b56+q1W/SiwKfoNDXYP5VWuXDn8uvY77csFzaffBf3u+d/jgubzrxc0X7DMaPpeqR0CAMhgGqwLAJB52rRpozO80JQpU4r1vk2bNoV23HHH0L777hv6/fffw9PffPPNUJUqVUJffPFFeNoDDzwQOuKII0Jbtmxxz3/77bdQ1apVQxMnToz4zJEjR7pl2bZtW3janXfeGapXr15o7dq14WkXXHCB+7yg999/37131qxZ4WmvvvpqqF27dm5Zvd69e4cuuuii8PPx48e7982YMSPi8xo0aBC6/fbbI6bpeePGjSOmvfPOO+79+hzv008/De25556h1atXh6cNHjw4dPTRR4fiofXr0KFDxLQPP/ww3/oVZxvcf//9oS5duoS2bt0anvbGG2+EDj744ND69esL3QbaNzRNr4nK2m+//SLqVc477zy33p7K0vueeuqp8LTZs2eHypYtGxozZkx42lVXXRXq06dPxGepvk4//fSI5fBuvvnmiM+Lrn/Rdu/evXvEtJtuusnN6+vg6aefDn300Ufh11XnqnvvjjvuCM2ZM8ctw6mnnhp69NFHw6+tW7fO7SOffPJJvuW77bbb8u1fwe0mjRo1Ct16662hwug9eq/27SDt+8Hl1PKddtppoSFDhkTMp339mmuuCT/X/rjXXnuFBg4cGJ722muvuX1l7ty5cddHcL1U/96SJUtC1apVy/e9KUi8+0f//v1DBx54YGjlypXu+Zo1a9z30K9Hjx49wvNqHYLbWMur5Zavv/461KRJk9C0adPc882bN7vvTrA+gvWu75yn7VyuXLnQl19+me+74svSdrj00ktDDz30UL79Nt5jR2Fi1fmzzz7r6lzbryjjxo0L1alTJ/TLL7+Ep+mYcOyxx7r/X3jhhRH1Flw2rY9e90466aRQ7dq1Q5MmTQpP+/XXX93x6OGHHw5P0zF/t912C1177bURy6K6HTRoUL460vf
"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": 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/PjxoXfffTfyXseOHaM+pxtuuCG0ePHiyPdQ9b7mmmsi72t/av8fe+yxoa1bt0amX3fdde4Y2r59e9T2nHzyyVHTvOPF/72bMGGC+25v2LAhMu3SSy+Neh27//v161fssj/66CO3nj59+kRNHzRokPtO/Pbbb5Fp3bt3Dw0dOjTyevLkyaG6detGzSOvvvqqW6f3vdV6O3XqFFqxYkWoOHRe8J+34h37xT0f++uof8fuw+Kckws6J/gVdE6+6qqrQnvttVfkvDp37txQjx49IvUoipbTev1/S2L5zx36TtaqVSu0//77h37//Xc3Tce8/7gvzJw5c9x5P9GfsWPHus+iOPS900+sm266ydXV+w766W/YCSec4P6tv0k6x8ZatGiRW977/pcrVy7Ut2/ffPM9/vjjbr6ZM2eGSkLbp3PJrtB3Xtvree+990I1a9aMnHd1XGsb45Wj7/Buu+1WrH3m980
"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": 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/8033xyqWLFi1L7cvHlz6OCDDw716dMnKt0zzjgjtN9++0VN0zV0/PHHR03z7gf+fXzdddeFrrrqqqj7yNlnn+32hSxatCjqvNE+1fclTVv3K61HaXm0rt69e4cOO+wwlzdPp06dQhMmTIh8vvXWW9293L+Nctddd4UqV67s7rmyevXq0JFHHunOuZKYO3du1DkyYMCAqPNaLrnkklC/fv0inz/99NNQ1apVQ/Pnz4+aT8dT57uf7r+x154ojb/97W9R0x588EE3r7f//eelviuI9/dl69atUdNPPfXU0D777BOZ/uqrr7q/E8X19ddfh+rXr1/g9zo/Hn300chn/a3VMdH17f2t0/earzh0L9I1U9yfO+64I+qaLw5ddwMHDsw3/dxzz3X7MJZ3H/Hui7vvvnuoa9eu+ebTvVHz6fpfsmSJ+/+oUaPyzaf7mb776aef8n134IEHhqZMmVKi/AAAUFLUiAUApB3VslItyb/85S+uxpJHNdI6dOjgarv5qda
"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
}