2026-04-15 13:49:57 +00:00
|
|
|
{
|
|
|
|
|
"cells": [
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2026-05-10 12:30:37 +00:00
|
|
|
"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",
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 107,
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 108,
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 109,
|
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-10 12:30:37 +00:00
|
|
|
"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",
|
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-10 12:30:37 +00:00
|
|
|
"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",
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 112,
|
2026-05-05 19:20:24 +00:00
|
|
|
"id": "6cdf8a70",
|
|
|
|
|
"metadata": {},
|
2026-05-10 12:30:37 +00:00
|
|
|
"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",
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 113,
|
2026-05-10 10:00:19 +00:00
|
|
|
"id": "575e375c",
|
|
|
|
|
"metadata": {},
|
2026-05-10 12:30:37 +00:00
|
|
|
"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"
|
|
|
|
|
}
|
|
|
|
|
],
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 114,
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 115,
|
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",
|
|
|
|
|
" 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-10 12:30:37 +00:00
|
|
|
"execution_count": 116,
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 117,
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 118,
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 119,
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 120,
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 121,
|
2026-05-10 10:00:19 +00:00
|
|
|
"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",
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 122,
|
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-10 12:30:37 +00:00
|
|
|
"execution_count": 123,
|
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",
|
|
|
|
|
"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": [],
|
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
|
|
|
|
|
}
|