2026-rff_mp/MusinAA/docs/Report 1.ipynb

149 lines
4.2 KiB
Plaintext
Raw Normal View History

2026-03-30 14:47:24 +00:00
{
"cells": [
{
"cell_type": "markdown",
"id": "2acfa743",
"metadata": {},
"source": [
"# 0. Подготовим окружение"
]
},
{
"cell_type": "code",
2026-04-05 07:06:28 +00:00
"execution_count": 26,
2026-03-30 14:47:24 +00:00
"id": "4689b73e",
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import os\n",
"sys.path.insert(0, os.path.abspath( '../task1'))\n",
"sys.path.insert(0, os.path.abspath( '../'))"
]
},
{
"cell_type": "markdown",
"id": "37cc11a5",
"metadata": {},
"source": [
"# 1. Генерация тестовых данных\n",
"\n",
"Создадим список records из N=10000 элементов. Каждый элемент — кортеж (name, phone). \n",
"Имена возъмём случайные из небольшого набора (чтобы были повторения и коллизии). \n",
"Для проверки влияния порядка подготовим два варианта: \n",
"\n",
"_records_shuffled_ — случайный порядок. \n",
"_records_sorted_ — отсортированный по имени (по алфавиту)."
]
},
{
"cell_type": "code",
2026-04-05 07:06:28 +00:00
"execution_count": 27,
"id": "a3b5c31b",
2026-03-30 14:47:24 +00:00
"metadata": {},
"outputs": [],
"source": [
"from util.randomNames import generate_test_data\n",
"from util.timeTester import test\n",
2026-03-30 14:47:24 +00:00
"\n",
"records_shuffled = generate_test_data(N=10000)\n",
"records_sorted = generate_test_data(N=10000, _sorted=True)"
2026-03-30 14:47:24 +00:00
]
},
{
"cell_type": "markdown",
"id": "c2f4989c",
"metadata": {},
"source": [
"# 2. Проведение замеров"
2026-03-30 14:47:24 +00:00
]
},
{
"cell_type": "code",
2026-04-05 07:06:28 +00:00
"execution_count": 28,
"id": "df12d41d",
2026-03-30 14:47:24 +00:00
"metadata": {},
"outputs": [],
2026-03-30 14:47:24 +00:00
"source": [
"# Подготовим функции СД, которые будем тестировать\n",
2026-03-30 14:47:24 +00:00
"from structures.LinkedList import *\n",
"from structures.HashTable import *\n",
"from structures.BinaryTree import *\n",
"\n",
"func_list = {\"Связанный список\" : (ll_insert, ll_find, ll_delete),\n",
" \"Хэш-таблица\" : (ht_insert, ht_find, ht_delete),\n",
" \"Бинарное дерево\" : (bst_insert, bst_find, bst_delete)}"
2026-03-30 14:47:24 +00:00
]
},
{
"cell_type": "code",
2026-04-05 07:06:28 +00:00
"execution_count": 29,
"id": "cc8d0436",
2026-03-30 14:47:24 +00:00
"metadata": {},
"outputs": [],
2026-03-30 14:47:24 +00:00
"source": [
"# Проведём замеры\n",
"report = [[\"Структура\", \"Режим\", \"Вставка\", \"Поиск\", \"Удаление\"]]\n",
"records = {\"Cлучайный\" : records_shuffled, \"Отсортированный\" : records_sorted}\n",
"\n",
"TEST_ITERATIONS_NUM = 5\n",
"\n",
"for _ in range(TEST_ITERATIONS_NUM):\n",
" for mode, data in records.items():\n",
" for struct_name, fns in func_list.items():\n",
" result = test(data, *fns)\n",
" row = [struct_name, mode,\n",
" result[\"insert_time\"],\n",
" result[\"find_time\"],\n",
" result[\"delete_time\"]]\n",
" report.append(row)"
2026-03-30 14:47:24 +00:00
]
},
{
"cell_type": "code",
2026-04-05 07:06:28 +00:00
"execution_count": 30,
"id": "2eedf056",
2026-03-30 14:47:24 +00:00
"metadata": {},
"outputs": [],
"source": [
"# Сохраним данные в csv\n",
"import csv\n",
"with open(\"data/results.csv\", \"w\", newline=\"\") as f:\n",
" writer = csv.writer(f)\n",
" writer.writerows(report)"
]
2026-04-05 07:06:28 +00:00
},
{
"cell_type": "code",
"execution_count": null,
"id": "8523ae48",
"metadata": {},
"outputs": [],
"source": [
"TODO проверить работает ли оно вообще"
]
2026-03-30 14:47:24 +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.14.3"
2026-03-30 14:47:24 +00:00
}
},
"nbformat": 4,
"nbformat_minor": 5
}