2026-04-15 13:49:57 +00:00
|
|
|
{
|
|
|
|
|
"cells": [
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 23,
|
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",
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 24,
|
2026-05-05 19:20:24 +00:00
|
|
|
"id": "88611f78",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"N = 10000\n",
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
2026-05-10 12:30:37 +00:00
|
|
|
"rand.shuffle(records_shuffled)\n"
|
2026-05-05 19:20:24 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"id": "9fd1b8cd",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
2026-05-10 10:00:19 +00:00
|
|
|
"## Исследование для LinkedList"
|
2026-05-05 19:20:24 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"id": "083d49d0",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"### Добавление всех элементов произвольного кортежа\n",
|
2026-05-10 10:00:19 +00:00
|
|
|
"- **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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 25,
|
2026-05-05 19:20:24 +00:00
|
|
|
"id": "11634fa4",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"time_ll_insert_sh = [] \n",
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
2026-05-10 10:00:19 +00:00
|
|
|
" 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",
|
2026-05-10 10:00:19 +00:00
|
|
|
"- **time_ll_insert_so** - Замер времени работы 10000 элементов (5 замеров) \n",
|
|
|
|
|
"- **heads_ll_so** - Массив голов для массив для сортированного массива"
|
2026-05-05 19:20:24 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 26,
|
2026-05-05 19:20:24 +00:00
|
|
|
"id": "9eab4641",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"time_ll_insert_so = [] \n",
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
2026-05-10 10:00:19 +00:00
|
|
|
" heads_ll_so.append(head)\n",
|
2026-05-10 12:30:37 +00:00
|
|
|
" 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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 27,
|
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",
|
2026-05-10 12:30:37 +00:00
|
|
|
" 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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 28,
|
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",
|
2026-05-10 12:30:37 +00:00
|
|
|
" 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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 29,
|
2026-05-05 19:20:24 +00:00
|
|
|
"id": "6cdf8a70",
|
|
|
|
|
"metadata": {},
|
2026-05-10 12:30:37 +00:00
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"data": {
|
|
|
|
|
"text/plain": [
|
2026-05-14 10:44:13 +00:00
|
|
|
"[0.04597238700080197,\n",
|
|
|
|
|
" 0.0345118730001559,\n",
|
|
|
|
|
" 0.04677163999804179,\n",
|
|
|
|
|
" 0.0356504750016029,\n",
|
|
|
|
|
" 0.033157756999571575]"
|
2026-05-10 12:30:37 +00:00
|
|
|
]
|
|
|
|
|
},
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 29,
|
2026-05-10 12:30:37 +00:00
|
|
|
"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",
|
2026-05-10 10:00:19 +00:00
|
|
|
" 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",
|
2026-05-10 10:00:19 +00:00
|
|
|
" current_head = ll.ll_delete(current_head, str_delete)\n",
|
2026-05-05 19:20:24 +00:00
|
|
|
" end = time.perf_counter()\n",
|
2026-05-10 10:00:19 +00:00
|
|
|
"\n",
|
2026-05-10 12:30:37 +00:00
|
|
|
" 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": {},
|
2026-05-10 10:00:19 +00:00
|
|
|
"source": [
|
|
|
|
|
"### Удаление элементов в сортированном массиве\n",
|
|
|
|
|
"- **time_ll_delete_so** - Време поиска в произвольном массиве (для 5 замеров)"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 30,
|
2026-05-10 10:00:19 +00:00
|
|
|
"id": "575e375c",
|
|
|
|
|
"metadata": {},
|
2026-05-10 12:30:37 +00:00
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"data": {
|
|
|
|
|
"text/plain": [
|
2026-05-14 10:44:13 +00:00
|
|
|
"[0.03482511599941063,\n",
|
|
|
|
|
" 0.02823204100059229,\n",
|
|
|
|
|
" 0.029369250001764158,\n",
|
|
|
|
|
" 0.01980331899903831,\n",
|
|
|
|
|
" 0.030789607000770047]"
|
2026-05-10 12:30:37 +00:00
|
|
|
]
|
|
|
|
|
},
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 30,
|
2026-05-10 12:30:37 +00:00
|
|
|
"metadata": {},
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
}
|
|
|
|
|
],
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
2026-05-10 12:30:37 +00:00
|
|
|
" time_ll_delete_so.append(end - start)\n",
|
|
|
|
|
"time_ll_delete_so"
|
2026-05-10 10:00:19 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 31,
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
2026-05-10 12:30:37 +00:00
|
|
|
" time_bt_insert_sh.append(end - start)\n"
|
2026-05-10 10:00:19 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 32,
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
2026-05-14 10:44:13 +00:00
|
|
|
" #head = bt.bst_insert(head, records_sorted[i][0],records_sorted[i][1])\n",
|
2026-05-10 10:00:19 +00:00
|
|
|
" 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",
|
2026-05-10 12:30:37 +00:00
|
|
|
" time_bt_insert_so.append(end - start)\n"
|
2026-05-10 10:00:19 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"id": "1e8a3f9e",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"### Поиск элементов в произвольном массиве\n",
|
|
|
|
|
"- **time_bt_find_sh** - Време поиска в произвольном массиве (для 5 замеров)\n",
|
|
|
|
|
"- **find_bt_sh** - массив найденных данных в произвольном массиве (только последний замер)"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 33,
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
2026-05-10 12:30:37 +00:00
|
|
|
" time_bt_find_sh.append(end - start)\n"
|
2026-05-10 10:00:19 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"id": "8db5208b",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"### Поиск элементов в отсортированном массиве\n",
|
|
|
|
|
"- **time_bt_find_so** - Време поиска в сортированном массиве (для 5 замеров)\n",
|
|
|
|
|
"- **find_bt_so** - массив найденных данных в сортированном массиве (только последний замер)"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 34,
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
2026-05-10 12:30:37 +00:00
|
|
|
" time_bt_find_so.append(end - start)\n"
|
2026-05-10 10:00:19 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"id": "ffbe3dfe",
|
|
|
|
|
"metadata": {},
|
2026-05-05 19:20:24 +00:00
|
|
|
"source": [
|
|
|
|
|
"### Удаление элементов в произвольном массиве\n",
|
2026-05-10 10:00:19 +00:00
|
|
|
"- **time_bt_delete_sh** - Време поиска в произвольном массиве (для 5 замеров)"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 35,
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 36,
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 37,
|
2026-05-10 10:00:19 +00:00
|
|
|
"id": "cb1788d1",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"time_ht_insert_sh = [] \n",
|
|
|
|
|
"for n in range(5):\n",
|
2026-05-14 10:44:13 +00:00
|
|
|
" buckets = ht.create_ht(size = N * 4)\n",
|
2026-05-10 10:00:19 +00:00
|
|
|
" 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",
|
2026-05-10 12:30:37 +00:00
|
|
|
" time_ht_insert_sh.append(end - start)\n"
|
2026-05-10 10:00:19 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"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
|
|
|
]
|
2026-05-10 10:00:19 +00:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 38,
|
2026-05-10 10:00:19 +00:00
|
|
|
"id": "4cb524e4",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"time_ht_insert_so = [] \n",
|
|
|
|
|
"for n in range(5):\n",
|
2026-05-14 10:44:13 +00:00
|
|
|
" buckets = ht.create_ht(size = N * 4)\n",
|
2026-05-10 10:00:19 +00:00
|
|
|
" 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",
|
2026-05-10 12:30:37 +00:00
|
|
|
" time_ht_insert_so.append(end - start)\n"
|
2026-05-10 10:00:19 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"id": "9d79016f",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"### Поиск элементов в произвольном массиве\n",
|
|
|
|
|
"- **time_ht_find_sh** - Време поиска в произвольном массиве (для 5 замеров)\n",
|
|
|
|
|
"- **find_ht_sh** - массив найденных данных в произвольном массиве (только последний замер)"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 39,
|
2026-05-10 10:00:19 +00:00
|
|
|
"id": "45cec102",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
2026-05-10 12:30:37 +00:00
|
|
|
"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"
|
|
|
|
|
]
|
2026-05-10 10:00:19 +00:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"id": "8f11dbad",
|
|
|
|
|
"metadata": {},
|
2026-05-10 12:30:37 +00:00
|
|
|
"source": [
|
|
|
|
|
"### Поиск элементов в отсортированном массиве\n",
|
|
|
|
|
"- **time_ht_find_so** - Време поиска в сортированном массиве (для 5 замеров)\n",
|
|
|
|
|
"- **find_ht_so** - массив найденных данных в сортированном массиве (только последний замер)"
|
|
|
|
|
]
|
2026-05-10 10:00:19 +00:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 40,
|
2026-05-10 10:00:19 +00:00
|
|
|
"id": "19e7a19a",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
2026-05-10 12:30:37 +00:00
|
|
|
"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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 41,
|
2026-05-10 12:30:37 +00:00
|
|
|
"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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 42,
|
2026-05-10 12:30:37 +00:00
|
|
|
"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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 43,
|
2026-05-10 12:30:37 +00:00
|
|
|
"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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"execution_count": 44,
|
2026-05-10 12:30:37 +00:00
|
|
|
"id": "d06c4bb0",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"data": {
|
2026-05-14 10:44:13 +00:00
|
|
|
"image/png": "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f2bz5s2zOofWrVub37uSzqekn52y/F+leKlatapatmyp1157rcTPoKT3tywZt7S6XTF9+uXv1fz58xUcHKwaNWooIiJCX3/99TX399VXX6levXrq37+/+fMtze8S6VLG7d27t6pVq6Z69eopOjpaf/zxx3Wdl63/I+7du1f9+/c31+Hv769+/fqZxyRMJpPOnz+vt99+2/yeX/n3Cq6HO8WBclRYWKiCggIZhqFff/1Vc+fO1fnz5/XQQw9Z9V20aJGCgoIUHx9vHjTu06ePtm3bpoiICEnSgQMH1KlTJwUGBur//b//p4YNG2rDhg0aP368srKyNH36dIt9+vr6atGiRVqxYoW5LSEhQXXq1NGZM2cs+q5atUoTJkzQsGHDFB8frxo1aig7O1u9e/cu0zlXrVpVn3/+ufn1XXfdZdXn8ccf1xtvvKFx48apf//+Onr0qJ5//nlt3bpVe/bsUb169XThwgVJ0tSpU9WvXz+98847unDhgl566SVFRkZq+/btuv322yVdurBTt25dvfLKK6pfv75+++03vf322+rQoYP27t2rW265xeL4ixcv1m233aY///xT//znP/XCCy+oRo0amjJlilWtt956q3kamYyMDD3wwAMW6999910NHz5c9957r95++215eHjo9ddfV69evbRhwwbdfffdZXr/SjJ+/HirC1rSpSldnnvuOY0cOVLPPfec8vLyNHfuXEVGRurbb78t9bf9SvO5Xa74PZQuhe/9+/eb150/f169e/dWvXr1tHDhQgUGBspkMmny5MkWX3yoCOvXr9fOnTs1a9Ys1ahRQ3PmzNH999+vQ4cOqVmzZja32bZtm+6//3516dJF7733nqpVq6bMzEzdcccdqlKliv7xj38oJCREqampevHFF3X06FG99dZbkqQ///xTPXr00C+//KK4uDjdfPPNWr9+vQYPHlxu59S3b18VFhZqzpw5CgwMVFZWlnbs2KGzZ89Kkj766CMNGjRIPj4+5p9VLy+vcjs+AODGqGy5sXiKz2K2tt+2bZt69uyptm3baunSpfLy8lJCQoIGDBigVatWXfXf21dffVWHDx+2at+wYYMGDBig0NBQzZ8/X4GBgTp69Kg2btxY4r7+9a9/adCgQYqJidGrr75qbv/tt98kSdOnT1fDhg117tw5ffTRR+rWrZs2b9581QsoP/30k+68805NmTJFVapU0aZNmzRt2jRt27ZN69evl5ubm9U2zz33nPr16ydJevPNN7V06VLzuqKiIt17773avn27pkyZok6dOunYsWOaPn26unXrpl27dqlq1arm/r6+vlqxYoXi4uJUq1YtSdL+/fv11VdfmV8Xu3Dhgrp27aoTJ07o2WefVdu2bbV//3794x//0A8//KBNmzZZXbC9mkaNGik1NdX8uvhcLm8rvqvj0KFD6tSpkxo0aKAFCxaobt26evfdd/XII4/o119/tcrvZcn5Vyp+f/Py8rRp0ya9+OKLKiwsrNApJcmuZFcAKC+VIUs2bdpU99xzj5KSkjRlyhSLvLRo0SL5+/vr/vvvt9quWbNmWrlypSTbmVO6NGPlQw89ZB60/e677/TSSy/pxx9/1LJly2zWU57Z7HodO3ZMcXFxVtnRnmtzBw8e1L333qvw8HD9+eef+uSTTxQdHa1du3Z
|
2026-05-10 12:30:37 +00:00
|
|
|
"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",
|
2026-05-14 10:44:13 +00:00
|
|
|
"plt.savefig('analysis.png')\n",
|
2026-05-10 12:30:37 +00:00
|
|
|
"plt.tight_layout() \n",
|
2026-05-14 10:44:13 +00:00
|
|
|
"plt.show()\n"
|
2026-05-10 12:30:37 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": null,
|
2026-05-14 10:44:13 +00:00
|
|
|
"id": "77155f07",
|
2026-05-10 12:30:37 +00:00
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
2026-05-10 10:00:19 +00:00
|
|
|
"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
|
|
|
|
|
}
|