2026-rff_mp/pomelovsd/DataStruct/data_structures.ipynb

843 lines
210 KiB
Plaintext
Raw Normal View History

2026-04-15 13:49:57 +00:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 106,
2026-04-15 13:49:57 +00:00
"id": "c533959c",
"metadata": {},
2026-05-05 19:20:24 +00:00
"outputs": [],
"source": [
"import LinkedList as ll\n",
"import HashTable as ht\n",
"import BinaryTree as bt\n",
"import time \n",
"import random as rand\n",
"import csv\n",
"import numpy as np\n",
"import sys"
2026-05-05 19:20:24 +00:00
]
},
{
"cell_type": "markdown",
"id": "15cd6183",
"metadata": {},
"source": [
"## Данные для обработки"
]
},
{
"cell_type": "code",
"execution_count": 107,
2026-05-05 19:20:24 +00:00
"id": "88611f78",
"metadata": {},
"outputs": [],
"source": [
"N = 10000\n",
"sys.setrecursionlimit(10000) \n",
2026-05-05 19:20:24 +00:00
"records_sorted = [(f\"User_{i:05d}\", f\"+7999{i:07d}\") for i in range(N)] \n",
"records_shuffled = records_sorted.copy()\n",
"rand.shuffle(records_shuffled)\n"
2026-05-05 19:20:24 +00:00
]
},
{
"cell_type": "markdown",
"id": "9fd1b8cd",
"metadata": {},
"source": [
"## Исследование для LinkedList"
2026-05-05 19:20:24 +00:00
]
},
{
"cell_type": "markdown",
"id": "083d49d0",
"metadata": {},
"source": [
"### Добавление всех элементов произвольного кортежа\n",
"- **data_ll_sh** - Структура произвольных данных (только последний замер)\n",
"- **time_ll_insert_sh** - Замер времени работы 10000 элементов (5 замеров) \n",
"- **heads_ll_sh** - Массив голов для массив для произвольного массива"
2026-05-05 19:20:24 +00:00
]
},
{
"cell_type": "code",
"execution_count": 108,
2026-05-05 19:20:24 +00:00
"id": "11634fa4",
"metadata": {},
"outputs": [],
"source": [
"time_ll_insert_sh = [] \n",
"heads_ll_sh = []\n",
2026-05-05 19:20:24 +00:00
"for n in range(5):\n",
" head = None\n",
" data_ll_sh = []\n",
" start = time.perf_counter()\n",
" for i in range(N):\n",
" head = ll.ll_insert(head, records_shuffled[i][0], records_shuffled[i][1])\n",
" data_ll_sh.append(head)\n",
" end = time.perf_counter()\n",
" heads_ll_sh.append(head)\n",
2026-05-05 19:20:24 +00:00
" time_ll_insert_sh.append(end - start)"
]
},
{
"cell_type": "markdown",
"id": "0a5f161e",
"metadata": {},
"source": [
"### Добавление всех элементов сортированного кортежа\n",
"- **data_ll_so** - Структура отсортированных данных (только последний замер)\n",
"- **time_ll_insert_so** - Замер времени работы 10000 элементов (5 замеров) \n",
"- **heads_ll_so** - Массив голов для массив для сортированного массива"
2026-05-05 19:20:24 +00:00
]
},
{
"cell_type": "code",
"execution_count": 109,
2026-05-05 19:20:24 +00:00
"id": "9eab4641",
"metadata": {},
"outputs": [],
"source": [
"time_ll_insert_so = [] \n",
"heads_ll_so = []\n",
2026-05-05 19:20:24 +00:00
"for n in range(5):\n",
" head = None\n",
" data_ll_so = []\n",
" start = time.perf_counter()\n",
" for i in range(N):\n",
" head = ll.ll_insert(head, records_sorted[i][0], records_sorted[i][1])\n",
" data_ll_so.append(head)\n",
" end = time.perf_counter()\n",
" heads_ll_so.append(head)\n",
" time_ll_insert_so.append(end - start)\n"
2026-05-05 19:20:24 +00:00
]
},
{
"cell_type": "markdown",
"id": "5862d31b",
"metadata": {},
"source": [
"### Поиск элементов в произвольном массиве\n",
"- **time_ll_find_sh** - Време поиска в произвольном массиве (для 5 замеров)\n",
"- **find_ll_sh** - массив найденных данных в произвольном массиве (только последний замер)"
]
},
{
"cell_type": "code",
"execution_count": 110,
2026-05-05 19:20:24 +00:00
"id": "aac6cd23",
"metadata": {},
"outputs": [],
"source": [
"time_ll_find_sh = []\n",
"for n in range(5):\n",
" find_ll_sh = []\n",
" start = time.perf_counter()\n",
" for m in range(100): # замер для 100 случайных узлов \n",
" i = rand.randint(0, N-1)\n",
" str_find = records_shuffled[i][0]\n",
" find_ll_sh.append(ll.ll_find(data_ll_sh[0], str_find))\n",
" for m in range(10): # недоступные данные\n",
" str_find = f\"Node_{m}\"\n",
" find_ll_sh.append(ll.ll_find(data_ll_sh[0], str_find))\n",
" end = time.perf_counter()\n",
" time_ll_find_sh.append(end - start)\n"
2026-05-05 19:20:24 +00:00
]
},
{
"cell_type": "markdown",
"id": "651aac23",
"metadata": {},
"source": [
"### Поиск элементов в отсортированном массиве\n",
"- **time_ll_find_so** - Време поиска в отсортированном массиве (для 5 замеров)\n",
"- **find_ll_so** - Массив найденных данных в отсортированном массиве (только последний замер)"
]
},
{
"cell_type": "code",
"execution_count": 111,
2026-05-05 19:20:24 +00:00
"id": "5e5ae537",
"metadata": {},
"outputs": [],
"source": [
"time_ll_find_so = []\n",
"for n in range(5):\n",
" find_ll_so = []\n",
" start = time.perf_counter()\n",
" for m in range(100): # замер для 100 случайных узлов \n",
" i = rand.randint(0, N-1)\n",
" str_find = records_sorted[i][0]\n",
" find_ll_so.append(ll.ll_find(data_ll_sh[0], str_find))\n",
" for m in range(10): # недоступные данные \n",
" str_find = f\"Node_{m}\"\n",
" find_ll_so.append(ll.ll_find(data_ll_sh[0], str_find))\n",
" end = time.perf_counter()\n",
" time_ll_find_so.append(end - start)\n"
2026-05-05 19:20:24 +00:00
]
},
{
"cell_type": "markdown",
"id": "a1f70be9",
"metadata": {},
"source": [
"### Удаление элементов в произвольном массиве\n",
"- **time_ll_delete_sh** - Време поиска в произвольном массиве (для 5 замеров)"
]
},
{
"cell_type": "code",
"execution_count": 112,
2026-05-05 19:20:24 +00:00
"id": "6cdf8a70",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0.036851685003057355,\n",
" 0.03824450399770285,\n",
" 0.03843940600199858,\n",
" 0.028395101999194594,\n",
" 0.034785898998961784]"
]
},
"execution_count": 112,
"metadata": {},
"output_type": "execute_result"
}
],
2026-04-15 13:49:57 +00:00
"source": [
2026-05-05 19:20:24 +00:00
"time_ll_delete_sh = []\n",
"for n in range(5):\n",
" current_head = heads_ll_sh[n]\n",
"\n",
2026-05-05 19:20:24 +00:00
" start = time.perf_counter()\n",
" for m in range(50): \n",
" i = rand.randint(0, N-1)\n",
" str_delete = records_shuffled[i][0]\n",
" current_head = ll.ll_delete(current_head, str_delete)\n",
2026-05-05 19:20:24 +00:00
" end = time.perf_counter()\n",
"\n",
" time_ll_delete_sh.append(end - start)\n",
"time_ll_delete_sh"
2026-05-05 19:20:24 +00:00
]
},
{
"cell_type": "markdown",
"id": "8d6156e9",
"metadata": {},
"source": [
"### Удаление элементов в сортированном массиве\n",
"- **time_ll_delete_so** - Време поиска в произвольном массиве (для 5 замеров)"
]
},
{
"cell_type": "code",
"execution_count": 113,
"id": "575e375c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0.04971757499879459,\n",
" 0.02925056100139045,\n",
" 0.027353375000529923,\n",
" 0.05481464200056507,\n",
" 0.05585349399916595]"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"time_ll_delete_so = []\n",
"for n in range(5):\n",
" current_head = heads_ll_so[n]\n",
"\n",
" start = time.perf_counter()\n",
" for m in range(50): \n",
" i = rand.randint(0, N-1)\n",
" str_delete = records_sorted[i][0]\n",
" current_head = ll.ll_delete(current_head, str_delete)\n",
" end = time.perf_counter()\n",
"\n",
" time_ll_delete_so.append(end - start)\n",
"time_ll_delete_so"
]
},
{
"cell_type": "markdown",
"id": "9a95a40b",
"metadata": {},
"source": [
"## Исследование BinaryTree"
]
},
{
"cell_type": "markdown",
"id": "54c92d21",
"metadata": {},
"source": [
"### Добавление всех элементов произвольного кортежа\n",
"- **data_bt_sh** - Структура произвольных данных (только последний замер)\n",
"- **time_bt_insert_sh** - Замер времени работы 10000 элементов (5 замеров) \n",
"- **heads_bt_sh** - Массив голов для массив для произвольного массива"
]
},
{
"cell_type": "code",
"execution_count": 114,
"id": "939aa900",
"metadata": {},
"outputs": [],
"source": [
"time_bt_insert_sh = [] \n",
"heads_bt_sh = []\n",
"for n in range(5):\n",
" head = None\n",
" data_bt_sh = []\n",
" start = time.perf_counter()\n",
" for i in range(N):\n",
" head = bt.bst_insert(head, records_shuffled[i][0], records_shuffled[i][1])\n",
" data_bt_sh.append(head)\n",
" end = time.perf_counter()\n",
" heads_bt_sh.append(head)\n",
" time_bt_insert_sh.append(end - start)\n"
]
},
{
"cell_type": "markdown",
"id": "e91b5893",
"metadata": {},
"source": [
"### Добавление всех элементов сортированного кортежа\n",
"- **data_bt_so** - Структура сортированных данных (только последний замер)\n",
"- **time_bt_insert_so** - Замер времени работы 10000 элементов (5 замеров) \n",
"- **heads_bt_so** - Массив голов для массив для сортированного массива"
]
},
{
"cell_type": "code",
"execution_count": 115,
"id": "d17b8108",
"metadata": {},
"outputs": [],
"source": [
"time_bt_insert_so = [] \n",
"heads_bt_so = []\n",
"for n in range(5):\n",
" head = None\n",
" data_bt_so = []\n",
" start = time.perf_counter()\n",
" head = bt.bst_insert_sort(records_sorted, 0, len(records_sorted) - 1)\n",
" data_bt_so.append(head)\n",
" end = time.perf_counter()\n",
" heads_bt_so.append(head)\n",
" time_bt_insert_so.append(end - start)\n"
]
},
{
"cell_type": "markdown",
"id": "1e8a3f9e",
"metadata": {},
"source": [
"### Поиск элементов в произвольном массиве\n",
"- **time_bt_find_sh** - Време поиска в произвольном массиве (для 5 замеров)\n",
"- **find_bt_sh** - массив найденных данных в произвольном массиве (только последний замер)"
]
},
{
"cell_type": "code",
"execution_count": 116,
"id": "4352b11d",
"metadata": {},
"outputs": [],
"source": [
"time_bt_find_sh = []\n",
"for n in range(5):\n",
" find_bt_sh = []\n",
" start = time.perf_counter()\n",
" for m in range(100): # замер для 100 случайных узлов \n",
" i = rand.randint(0, N-1)\n",
" str_find = records_shuffled[i][0]\n",
" find_bt_sh.append(bt.bst_find(data_bt_sh[0], str_find))\n",
" for m in range(10): # недоступные данные\n",
" str_find = f\"Node_{m}\"\n",
" find_bt_sh.append(bt.bst_find(data_bt_sh[0], str_find))\n",
" end = time.perf_counter()\n",
" time_bt_find_sh.append(end - start)\n"
]
},
{
"cell_type": "markdown",
"id": "8db5208b",
"metadata": {},
"source": [
"### Поиск элементов в отсортированном массиве\n",
"- **time_bt_find_so** - Време поиска в сортированном массиве (для 5 замеров)\n",
"- **find_bt_so** - массив найденных данных в сортированном массиве (только последний замер)"
]
},
{
"cell_type": "code",
"execution_count": 117,
"id": "7941e689",
"metadata": {},
"outputs": [],
"source": [
"time_bt_find_so = []\n",
"for n in range(5):\n",
" find_bt_so = []\n",
" start = time.perf_counter()\n",
" for m in range(100): # замер для 100 случайных узлов \n",
" i = rand.randint(0, N-1)\n",
" str_find = records_sorted[i][0]\n",
" find_bt_so.append(bt.bst_find(data_bt_so[0], str_find))\n",
" for m in range(10): # недоступные данные\n",
" str_find = f\"Node_{m}\"\n",
" find_bt_so.append(bt.bst_find(data_bt_so[0], str_find))\n",
" end = time.perf_counter()\n",
" time_bt_find_so.append(end - start)\n"
]
},
{
"cell_type": "markdown",
"id": "ffbe3dfe",
"metadata": {},
2026-05-05 19:20:24 +00:00
"source": [
"### Удаление элементов в произвольном массиве\n",
"- **time_bt_delete_sh** - Време поиска в произвольном массиве (для 5 замеров)"
]
},
{
"cell_type": "code",
"execution_count": 118,
"id": "4043a9dc",
"metadata": {},
"outputs": [],
"source": [
"time_bt_delete_sh = []\n",
"for n in range(5):\n",
" current_head = heads_bt_sh[n]\n",
"\n",
" start = time.perf_counter()\n",
" for m in range(50): \n",
" i = rand.randint(0, N-1)\n",
" str_delete = records_shuffled[i][0]\n",
" current_head = bt.bst_delete(current_head, str_delete)\n",
" end = time.perf_counter()\n",
"\n",
" time_bt_delete_sh.append(end - start)"
]
},
{
"cell_type": "markdown",
"id": "7db94391",
"metadata": {},
"source": [
"### Удаление элементов в сортированном массиве\n",
"- **time_bt_delete_so** - Време поиска в произвольном массиве (для 5 замеров)"
]
},
{
"cell_type": "code",
"execution_count": 119,
"id": "7ab6136c",
"metadata": {},
"outputs": [],
"source": [
"time_bt_delete_so = []\n",
"for n in range(5):\n",
" current_head = heads_bt_so[n]\n",
"\n",
" start = time.perf_counter()\n",
" for m in range(50): \n",
" i = rand.randint(0, N-1)\n",
" str_delete = records_sorted[i][0]\n",
" current_head = bt.bst_delete(current_head, str_delete)\n",
" end = time.perf_counter()\n",
"\n",
" time_bt_delete_so.append(end - start)"
]
},
{
"cell_type": "markdown",
"id": "0bf5b406",
"metadata": {},
"source": [
"## Исследование HashTable"
]
},
{
"cell_type": "markdown",
"id": "75586bbc",
"metadata": {},
"source": [
"### Добавление всех элементов произвольного кортежа\n",
"- **data_ht_sh** - Структура произвольных данных (только последний замер)\n",
"- **time_ht_insert_sh** - Замер времени работы 10000 элементов (5 замеров) \n",
"- **heads_ht_sh** - Массив голов для массив для произвольного массива"
]
},
{
"cell_type": "code",
"execution_count": 120,
"id": "cb1788d1",
"metadata": {},
"outputs": [],
"source": [
"time_ht_insert_sh = [] \n",
"for n in range(5):\n",
" buckets = ht.create_ht(size = N)\n",
" data_ht_sh = []\n",
" start = time.perf_counter()\n",
" for i in range(N):\n",
" buckets = ht.ht_insert(buckets, records_shuffled[i][0], records_shuffled[i][1])\n",
" data_ht_sh.append(buckets)\n",
" end = time.perf_counter()\n",
" time_ht_insert_sh.append(end - start)\n"
]
},
{
"cell_type": "markdown",
"id": "6bb2aa16",
"metadata": {},
"source": [
"### Добавление всех элементов сортированного кортежа\n",
"- **data_ht_so** - Структура сортированных данных (только последний замер)\n",
"- **time_ht_insert_so** - Замер времени работы 10000 элементов (5 замеров) \n",
"- **heads_ht_so** - Массив голов для массив для сортированного массива"
2026-04-15 13:49:57 +00:00
]
},
{
"cell_type": "code",
"execution_count": 121,
"id": "4cb524e4",
"metadata": {},
"outputs": [],
"source": [
"time_ht_insert_so = [] \n",
"for n in range(5):\n",
" buckets = ht.create_ht(size = N)\n",
" data_ht_so = []\n",
" start = time.perf_counter()\n",
" for i in range(N):\n",
" buckets = ht.ht_insert(buckets, records_sorted[i][0], records_sorted[i][1])\n",
" data_ht_so.append(buckets)\n",
" end = time.perf_counter()\n",
" time_ht_insert_so.append(end - start)\n"
]
},
{
"cell_type": "markdown",
"id": "9d79016f",
"metadata": {},
"source": [
"### Поиск элементов в произвольном массиве\n",
"- **time_ht_find_sh** - Време поиска в произвольном массиве (для 5 замеров)\n",
"- **find_ht_sh** - массив найденных данных в произвольном массиве (только последний замер)"
]
},
{
"cell_type": "code",
"execution_count": 122,
"id": "45cec102",
"metadata": {},
"outputs": [],
"source": [
"time_ht_find_sh = []\n",
"for n in range(5):\n",
" find_ht_sh = []\n",
" start = time.perf_counter()\n",
" for m in range(100): # замер для 100 случайных узлов \n",
" i = rand.randint(0, N-1)\n",
" str_find = records_shuffled[i][0]\n",
" find_ht_sh.append(ht.ht_find(data_ht_sh[0], str_find))\n",
" for m in range(10): # недоступные данные\n",
" str_find = f\"Node_{m}\"\n",
" find_ht_sh.append(ht.ht_find(data_ht_sh[0], str_find))\n",
" end = time.perf_counter()\n",
" time_ht_find_sh.append(end - start)\n"
]
},
{
"cell_type": "markdown",
"id": "8f11dbad",
"metadata": {},
"source": [
"### Поиск элементов в отсортированном массиве\n",
"- **time_ht_find_so** - Време поиска в сортированном массиве (для 5 замеров)\n",
"- **find_ht_so** - массив найденных данных в сортированном массиве (только последний замер)"
]
},
{
"cell_type": "code",
"execution_count": 123,
"id": "19e7a19a",
"metadata": {},
"outputs": [],
"source": [
"time_ht_find_so = []\n",
"for n in range(5):\n",
" find_ht_so = []\n",
" start = time.perf_counter()\n",
" for m in range(100): # замер для 100 случайных узлов \n",
" i = rand.randint(0, N-1)\n",
" str_find = records_shuffled[i][0]\n",
" find_ht_so.append(ht.ht_find(data_ht_so[0], str_find))\n",
" for m in range(10): # недоступные данные\n",
" str_find = f\"Node_{m}\"\n",
" find_ht_so.append(ht.ht_find(data_ht_so[0], str_find))\n",
" end = time.perf_counter()\n",
" time_ht_find_so.append(end - start)\n"
]
},
{
"cell_type": "markdown",
"id": "e39fa07c",
"metadata": {},
"source": [
"### Удаление элементов в произвольном массиве\n",
"- **time_ht_delete_sh** - Време поиска в произвольном массиве (для 5 замеров)"
]
},
{
"cell_type": "code",
"execution_count": 124,
"id": "90a9613d",
"metadata": {},
"outputs": [],
"source": [
"time_ht_delete_sh = []\n",
"for n in range(5):\n",
" current_head = data_ht_sh[0]\n",
"\n",
" start = time.perf_counter()\n",
" for m in range(50): \n",
" i = rand.randint(0, N-1)\n",
" str_delete = records_shuffled[i][0]\n",
" current_head = ht.ht_delete(current_head, str_delete)\n",
" end = time.perf_counter()\n",
" time_ht_delete_sh.append(end - start)"
]
},
{
"cell_type": "markdown",
"id": "eb9fcf01",
"metadata": {},
"source": [
"### Удаление элементов в сортированном массиве\n",
"- **time_ht_delete_so** - Време поиска в произвольном массиве (для 5 замеров)"
]
},
{
"cell_type": "code",
"execution_count": 125,
"id": "dfe01fe5",
"metadata": {},
"outputs": [],
"source": [
"time_ht_delete_so = []\n",
"for n in range(5):\n",
" current_head = data_ht_so[0]\n",
"\n",
" start = time.perf_counter()\n",
" for m in range(50): \n",
" i = rand.randint(0, N-1)\n",
" str_delete = records_shuffled[i][0]\n",
" current_head = ht.ht_delete(current_head, str_delete)\n",
" end = time.perf_counter()\n",
" time_ht_delete_so.append(end - start)"
]
},
{
"cell_type": "markdown",
"id": "c0ce9bbd",
"metadata": {},
"source": [
"## Создание CSV файла\n",
"Запишем все рание полученные данные в CSV файл"
]
},
{
"cell_type": "code",
"execution_count": 126,
"id": "ce249772",
"metadata": {},
"outputs": [],
"source": [
"results = [\n",
" [\"Структура\", \"Режим\", \"Операция\", \"Время (сек)\"],\n",
" [\"LinkedList\", \"случайный\", \"вставка\", sum(time_ll_insert_sh)/len(time_ll_insert_sh)],\n",
" [\"LinkedList\", \"сортированный\", \"вставка\", sum(time_ll_insert_so)/len(time_ll_insert_so)],\n",
" [\"LinkedList\", \"случайный\", \"поиск\", sum(time_ll_find_sh)/len(time_ll_find_sh)],\n",
" [\"LinkedList\", \"сортированный\", \"поиск\", sum(time_ll_find_so)/len(time_ll_find_so)],\n",
" [\"LinkedList\", \"случайный\", \"удаление\", sum(time_ll_delete_sh)/len(time_ll_delete_sh)],\n",
" [\"LinkedList\", \"сортированный\", \"удаление\", sum(time_ll_delete_so)/len(time_ll_delete_so)],\n",
" [\"HashTable\", \"случайный\", \"вставка\", sum(time_ht_insert_sh)/len(time_ht_insert_sh)],\n",
" [\"HashTable\", \"сортированный\", \"вставка\", sum(time_ht_insert_so)/len(time_ht_insert_so)],\n",
" [\"HashTable\", \"случайный\", \"поиск\", sum(time_ht_find_sh)/len(time_ht_find_sh)],\n",
" [\"HashTable\", \"сортированный\", \"поиск\", sum(time_ht_find_so)/len(time_ht_find_so)],\n",
" [\"HashTable\", \"случайный\", \"удаление\", sum(time_ht_delete_sh)/len(time_ht_delete_sh)],\n",
" [\"HashTable\", \"сортированный\", \"удаление\", sum(time_ht_delete_so)/len(time_ht_delete_so)],\n",
" [\"BinaryTree\", \"случайный\", \"вставка\", sum(time_bt_insert_sh)/len(time_bt_insert_sh)],\n",
" [\"BinaryTree\", \"сортированный\", \"вставка\", sum(time_bt_insert_so)/len(time_bt_insert_so)],\n",
" [\"BinaryTree\", \"случайный\", \"поиск\", sum(time_bt_find_sh)/len(time_bt_find_sh)],\n",
" [\"BinaryTree\", \"сортированный\", \"поиск\", sum(time_bt_find_so)/len(time_bt_find_so)],\n",
" [\"BinaryTree\", \"случайный\", \"удаление\", sum(time_bt_delete_sh)/len(time_bt_delete_sh)],\n",
" [\"BinaryTree\", \"сортированный\", \"удаление\", sum(time_bt_delete_so)/len(time_bt_delete_so)],\n",
"]\n",
"\n",
"with open(\"results.csv\", \"w\", newline=\"\") as f:\n",
" writer = csv.writer(f)\n",
" writer.writerows(results)"
]
},
{
"cell_type": "markdown",
"id": "69023ea2",
"metadata": {},
"source": [
"## Построение графиков и сравнение данных между собой\n"
]
},
{
"cell_type": "code",
"execution_count": 127,
"id": "d06c4bb0",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAB8UAAAXRCAYAAAAHfExZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVyU9f7//+fI6origqKAaKWoqQVlqLiU4pYtR08uJ5dSO4blQh3L1GNZSS5fQ1M0zfJYbp20xeKk6FEzpXKtjpktLqhBiiW4sl6/P/wxH8cZFHCGcWYe99vtut2c97yva17XDOLT6zXXdZkMwzAEAAAAAAAAAAAAAIAbquDsAgAAAAAAAAAAAAAAcBSa4gAAAAAAAAAAAAAAt0VTHAAAAAAAAAAAAADgtmiKAwAAAAAAAAAAAADcFk1xAAAAAAAAAAAAAIDboikOAAAAAAAAAAAAAHBbNMUBAAAAAAAAAAAAAG6LpjgAAAAAAAAAAAAAwG3RFAfgFgoKCpSZmensMgAAAAAAAAAAAHCToSkOwCWdO3dO06ZN0913361atWrJx8dHtWvX1o4dO5xdGgAAAAAAAAAAAG4iNMWBcrR06VKZTCaLpXbt2urUqZM+/fRTZ5fnMjIyMhQVFaXXXntNDzzwgD788EN98803+vbbb9WmTRtnlwcHadiwoe6///5rzhk6dKgaNmxYpu2/+OKLMplMDr3iwJEjR2QymbR06dJSve6WLVtkMpm0ZcuWUr1eUlKSxWsBAG4+5EPAtZFRyagAUF7IjQCKYzKZ9NRTT11zTqdOndSpU6cybX/o0KGqUqVKmdYtKVvZsiSvW/S78ciRI6V6vWnTpumjjz4qfaFwad7OLgDwRO+8846aNm0qwzCUkZGhefPmqXfv3vrkk0/Uu3dvZ5d30/v73/+u9PR0bdu2Ta1atXJ2ObiJTJ48WWPGjHF2GXZ35513KjU1Vc2aNSvVeklJSapVq5aGDh3qmMIAAHZDPgTcFxnVEhkVAG4MuRFAWSQlJTm7BIfo1auXUlNTVa9evVKtN23aNPXt21cPPfSQYwrDTYmmOOAELVq0UFRUlPlx9+7dVaNGDa1cuZLweh2//vqrPvnkE02fPp2GOKw0btzY2SU4RLVq1XTPPfc4uwwAgAORDwH3RUYFANgTuRFAWZT2i4yuonbt2qpdu7azy4CL4PLpwE3A399fvr6+8vHxMY8VXcJuxowZevXVVxUaGip/f39FRUVp06ZNVtv4+eefNXDgQNWpU0d+fn6KiIjQ/PnzLeYUXYLEZDLpm2++sXju8OHD8vLykslk0gcffGDx3Ny5c9WiRQtVqVLF4hJNL774Yon2b+jQoVaXdzKZTFZnBhQWFmrGjBlq2rSp/Pz8VKdOHQ0ePFjHjx83z/n222/Nc2NiYlS9enVVq1ZN3bp1086dOy2298svv+ixxx7TrbfeqkqVKql+/frq3bu3vv/++2LfF5PJJD8/PzVu3Fj//Oc/VVBQYLU/nTp1srk/V18CcOPGjbrvvvtUrVo1VapUSe3atbP67Iq7LOGuXbustmnrsou//PKL/P39bV4iZvXq1YqOjlblypVVpUoVdevWTXv37rXan+KU9HOTrN/DouXqenfu3Knu3burTp06qlChQrHzysrWe1R0+aB3331XERERqlSpklq1alWiS4v9+OOPatSokdq0aaOTJ09Kunz5/r///e9q0KCBfH19FR4erpdeekn5+fkW6/7222965JFHVLVqVQUEBKhfv37KyMgo037ZunzQoUOH1L9/fwUHB8vPz09BQUG67777tG/fPkmXL+W5f/9+bd261e7vMwDA8dw1H9q67Oe11v/yyy913333qWrVqqpUqZLatm2rzz77zOY2r8xCeXl5ioiIsJnRvv76a/Xu3Vs1a9aUv7+/GjdurLFjx5qfL8pnV1q3bp38/Pw0btw489ipU6cUFxenZs2aqUqVKqpTp47uvfdebdu27ZrvgXQ5J8bExKhGjRry9/dXixYtlJCQoLy8PKu5RZ+7reVKubm5euWVV8xZunbt2nrsscd06tQpi3kNGzaUyWTSqFGjrF6rc+fOMplMVpcDz87O1rPPPqvw8HD5+vqqfv36Gjt2rM6fP28xr7jLNt5///3mHHKt/bGVN//3v//pwQcfNL9XrVu31r/+9S+L7Zc2z1/r/fXx8VFoaKiefvppq/0rKzIqGRUAHMkdc+ORI0fk7e2thIQEq+e++OILmUwm/fvf/7YYL+543dWvM3/+fHXo0EF16tRR5cqVdfvtt2vGjBnllsNs3XblqaeestqmrdpffvllmUwmq0tgl/V426pVq3TXXXeZj11GRkbqzTfflGEYVnNLeuyvNLnRZDJp5syZFuOGYeiWW26xmStLkneKPrNZs2ZZ7UOLFi3M711x+1Pcz05p/l9StFSsWFHNmjXTnDlziv0Mint/S5NnS6rTVZdPv/K9mj17tsLDw1WlShVFR0frq6++uu72tm/frlq1aun+++83f74l+V0iXc6z3bt3V6VKlVSrVi2NHDlSZ8+eLdN+2fr/4N69e3X//feb6wgODlavXr3MfQaTyaTz58/rX//6l/k9v/rvFdwTZ4oDTlBQUKD8/HwZhqHff/9dM2fO1Pnz5zVw4ECrufPmzVNYWJgSExPNTeMePXpo69atio6OliT98MMPatu2rUJDQ/X//t//U926dbV+/XqNHj1amZmZmjJlisU2AwMDNW/ePC1btsw8lpSUpBo1auj06dMWc1euXKkxY8Zo0KBBSkxMVJUqVZSVlaXu3buXap8rVqyo//73v+bH9957r9WcJ598UosWLdJTTz2l+++/X0eOHNHkyZO1ZcsW7dmzR7Vq1dKFCxckSRMmTFCvXr307rvv6sKFC3r11VcVExOjbdu26a677pJ0+YBPzZo19dprr6l27dr6448/9K9//Utt2rTR3r171aRJE4vXnz9/vu68805dvHhR//73v/Xyyy+rSpUqGj9+vFWtd9xxh/mSM+np6frLX/5i8fx7772nwYMH68EHH9S//vUv+fj46M0331S3bt20fv163XfffaV6/4ozevRoqwNd0uXLv0yaNEmPPfaYJk2apNzcXM2cOVMxMTH65ptvSvzNwJJ8blcqeg+ly0F9//795ufOnz+v7t27q1atWnrjjTcUGhoqk8mkZ5991uKLD47w2WefaefOnZo6daqqVKmiGTNm6OGHH9bBgwfVqFEjm+ts3bpVDz/8sDp06KAVK1aoUqVKysjI0N13360KFSron//8pxo3bqzU1FS98sorOnLkiN555x1J0sWLF9WlSxf99ttvSkhI0G233abPPvtM/fr1s9s+9ezZUwUFBZoxY4ZCQ0OVmZmpHTt26MyZM5KkDz/8UH379lVAQID5Z9XPz89urw8AsC9Py4dFl/0sYmv9rVu3qmvXrmrZsqWWLFkiPz8/JSUlqXfv3lq5cuU1/119/fXX9fPPP1uNr1+/Xr1791ZERIRmz56t0NBQHTlyRBs2bCh2W59++qn69u2ruLg4vf766+bxP/74Q5I0ZcoU1a1bV+fOndOHH36oTp06adOmTdc8qPLTTz+pffv2Gj9+vCpUqKCNGzdq4sSJ2rp1qz777DN5eXlZrTNp0iT16tVLkvTWW29pyZIl5ucKCwv14IMPatu2bRo/frzatm2ro0ePasqUKerUqZN27dqlihUrmucHBgZq2bJlSkhIULVq1SRJ+/fv1/bt282Pi1y4cEEdO3bU8ePH9cILL6hly5bav3+//vnPf+r777/Xxo0brQ7iXku9evWUmppqfly0L1eOFZ3pcfDgQbVt21Z16tTR3LlzVbNmTb333nsaOnSofv/9d6ucXpo8f7Wi9zc3N1cbN27UK6+8ooKCAodeZpKMSkYFgLLwhNzYsGFDPfDAA1q4cKHGjx9vkY3mzZun4OBgPfzww1brNWrUSMuXL5dkO19Kl69COXDgQHPT9ttvv9Wrr76qH3/8UW+//bbNeuyZw8rq6NGjSkhIsMqJN3K87cCBA3rwwQcVFRWlixcv6uOPP9bIkSO
"text/plain": [
"<Figure size 2000x1500 with 9 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"t_ll = [sum(time_ll_insert_sh)/len(time_ll_insert_sh), sum(time_ll_insert_so)/len(time_ll_insert_so), sum(time_ll_find_sh)/len(time_ll_find_sh), sum(time_ll_find_so)/len(time_ll_find_so), sum(time_ll_delete_sh)/len(time_ll_delete_sh), sum(time_ll_delete_so)/len(time_ll_delete_so)]\n",
"t_ht = [sum(time_ht_insert_sh)/len(time_ht_insert_sh), sum(time_ht_insert_so)/len(time_ht_insert_so), sum(time_ht_find_sh)/len(time_ht_find_sh), sum(time_ht_find_so)/len(time_ht_find_so), sum(time_ht_delete_sh)/len(time_ht_delete_sh), sum(time_ht_delete_so)/len(time_ht_delete_so)]\n",
"t_bt = [sum(time_bt_insert_sh)/len(time_bt_insert_sh), sum(time_bt_insert_so)/len(time_bt_insert_so), sum(time_bt_find_sh)/len(time_bt_find_sh), sum(time_bt_find_so)/len(time_bt_find_so), sum(time_bt_delete_sh)/len(time_bt_delete_sh), sum(time_bt_delete_so)/len(time_bt_delete_so)]\n",
"categoris = [\"рандомное добавление\", \"отсортированное добавление\", \"рандомный поиск\", \"отсортированный поиск\", \"рандомное удаление\", \"отсортированное удаление\"]\n",
"\n",
"plt.figure(\"графики\", figsize = (20,15))\n",
"\n",
"plt.subplot(3,3,1)\n",
"plt.bar(categoris[0], t_ll[0], color = \"orange\")\n",
"plt.bar(categoris[1], t_ll[1], color = \"green\")\n",
"\n",
"plt.title(f\"Время добавление для LinkedList\")\n",
"\n",
"plt.ylabel(\"время работы(секунды)\")\n",
"\n",
"plt.subplot(3,3,2)\n",
"plt.bar(categoris[2], t_ll[2], color = \"orange\")\n",
"plt.bar(categoris[3], t_ll[3], color = \"green\")\n",
"\n",
"plt.title(f\"Время поиска элементов в LinkedList\")\n",
"\n",
"plt.ylabel(\"время работы(секунды)\")\n",
"\n",
"\n",
"plt.subplot(3,3,3)\n",
"plt.bar(categoris[4], t_ll[4], color = \"orange\")\n",
"plt.bar(categoris[5], t_ll[5], color = \"green\")\n",
"\n",
"plt.title(f\"Время удаления элементов в LinkedList\")\n",
"\n",
"plt.ylabel(\"время работы(секунды)\")\n",
"\n",
"plt.subplot(3,3,4)\n",
"plt.bar(categoris[0], t_ht[0], color = \"orange\")\n",
"plt.bar(categoris[1], t_ht[1], color = \"green\")\n",
"\n",
"plt.title(f\"Время добавление для HashTable\")\n",
"\n",
"plt.ylabel(\"время работы(секунды)\")\n",
"\n",
"plt.subplot(3,3,5)\n",
"plt.bar(categoris[2], t_ht[2], color = \"orange\")\n",
"plt.bar(categoris[3], t_ht[3], color = \"green\")\n",
"\n",
"plt.title(f\"Время поиска элементов в HashTable\")\n",
"\n",
"plt.ylabel(\"время работы(секунды)\")\n",
"\n",
"\n",
"plt.subplot(3,3,6)\n",
"plt.bar(categoris[4], t_bt[4], color = \"orange\")\n",
"plt.bar(categoris[5], t_bt[5], color = \"green\")\n",
"\n",
"plt.title(f\"Время удаления элементов в HashTable\")\n",
"\n",
"plt.ylabel(\"время работы(секунды)\")\n",
"\n",
"plt.subplot(3,3,7)\n",
"plt.bar(categoris[0], t_bt[0], color = \"orange\")\n",
"plt.bar(categoris[1], t_bt[1], color = \"green\")\n",
"\n",
"plt.title(f\"Время добавление для BinaryTree\")\n",
"\n",
"plt.ylabel(\"время работы(секунды)\")\n",
"\n",
"plt.subplot(3,3,8)\n",
"plt.bar(categoris[2], t_bt[2], color = \"orange\")\n",
"plt.bar(categoris[3], t_bt[3], color = \"green\")\n",
"\n",
"plt.title(f\"Время поиска элементов в BinaryTree\")\n",
"\n",
"plt.ylabel(\"время работы(секунды)\")\n",
"\n",
"\n",
"plt.subplot(3,3,9)\n",
"plt.bar(categoris[4], t_bt[4], color = \"orange\")\n",
"plt.bar(categoris[5], t_bt[5], color = \"green\")\n",
"\n",
"plt.title(f\"Время удаления элементов в BinaryTree\")\n",
"\n",
"plt.ylabel(\"время работы(секунды)\")\n",
"\n",
"plt.tight_layout() \n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b3dd4c73",
"metadata": {},
"outputs": [],
"source": []
2026-04-15 13:49:57 +00:00
}
],
"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.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}