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

139 lines
3.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"id": "2acfa743",
"metadata": {},
"source": [
"# 0. Подготовим окружение"
]
},
{
"cell_type": "code",
"execution_count": 16,
"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",
"execution_count": 17,
"id": "a3b5c31b",
"metadata": {},
"outputs": [],
"source": [
"from util.randomNames import generate_test_data\n",
"from util.timeTester import test\n",
"\n",
"records_shuffled = generate_test_data(N=10000)\n",
"records_sorted = generate_test_data(N=10000, _sorted=True)"
]
},
{
"cell_type": "markdown",
"id": "c2f4989c",
"metadata": {},
"source": [
"# 2. Проведение замеров"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "df12d41d",
"metadata": {},
"outputs": [],
"source": [
"# Подготовим функции СД, которые будем тестировать\n",
"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)}"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "cc8d0436",
"metadata": {},
"outputs": [],
"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)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "2eedf056",
"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)"
]
}
],
"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"
}
},
"nbformat": 4,
"nbformat_minor": 5
}