From b4b8bf522d76b0416898574ad401b9fa1899e188 Mon Sep 17 00:00:00 2001 From: Yaroslav Date: Sat, 23 May 2026 19:42:32 +0300 Subject: [PATCH] task1 --- .gitignore | 1 + BudakovIS/428.md | 0 DerbenevRY/428.md | 0 KuzminskiyAA/427.md | 1 + KuznetsovAS/427.md | 0 MashinDD/429.txt | 0 MininaVD/427.txt | 1 + MininaVD/MininaVD | 1 + MusinAA/428b.md | 0 MylnikovAS/427.md | 1 + ProninVV/427.md | Bin 0 -> 12 bytes ProninVV/file.txt | Bin 0 -> 12 bytes README.md | 151 +++++++++++++++++++++- SimonovaMS/428.md | 0 SimonovaMS/428.txt | 0 SolovevDS/428b.md | 0 VaravinVV/428b | 1 + VolkovVA/428b.md | 0 YanyaevAA/428b.md | 0 YaroslavtsevAS/428.md | 1 + ZelentsovAV/428b.md | 0 anikinvd/428.md | 0 chizhikovaSM/428.md | 0 duznb/429.md.txt | 0 filippovavm/427 | 1 + fomichevks/426.md.txt | 0 ivanchenkoam/427.txt | 1 + ivantsovma/428.txt | 0 kolesovve/427.md | 0 komissarovgo/427.md | Bin 0 -> 12 bytes konnovaea/429 | 1 + kornevma/426.md | 0 krasnovia/429.txt | 0 lomakinae/426 | 0 meosyam/428.md.txt | 0 morozovns/1.py | 2 + morozovns/429 | 1 + nehoroshevaa/428b.md | 1 + nikolaevda/427.md | Bin 0 -> 12 bytes novikovsd/428 | 0 osininyai/427.md | 0 petryaninyas/README.md | 18 +++ petryaninyas/bst.py | 118 +++++++++++++++++ petryaninyas/docs/data/delete.png | Bin 0 -> 65600 bytes petryaninyas/docs/data/find.png | Bin 0 -> 65132 bytes petryaninyas/docs/data/insert.png | Bin 0 -> 61144 bytes petryaninyas/docs/data/results.csv | 109 ++++++++++++++++ petryaninyas/docs/Отчёт по работе.docx | Bin 0 -> 20508 bytes petryaninyas/experiments.py | 172 +++++++++++++++++++++++++ petryaninyas/hash_table.py | 44 +++++++ petryaninyas/linked_list.py | 73 +++++++++++ petryaninyas/main.py | 21 +++ petryaninyas/plot_results.py | 66 ++++++++++ petryaninyas/requirements.txt | 1 + petryaninyas/results.csv | 109 ++++++++++++++++ petryaninyas/utils.py | 29 +++++ pogodinda/427.md.txt | 0 pomelovsd/427 | 1 + raskatovia/429.md | Bin 0 -> 72 bytes romanovpv/427.md | 0 semyanovra/426.md | 0 shahovaa/429.md | 0 shalovsa/429.txt | 0 shekurovaa/429.md | 0 skorohodovsa/427 | 1 + skorohodovsa/main.py | 4 + smirnovad/429.md | 0 sobininaas/429.rtf | 6 + soldatkinao/428б.md | 1 + sorokinfi/427.md | 0 stepinim/428.md | 0 stepushovgs/427 | 1 + svetlakovkyu/426 | 0 talantsevgi/427.txt | 1 + tseremonnikovaaa/427 | 1 + volkovim/428b.md | 1 + zaharoves/429.md | 1 + zverevem/429.txt | 0 78 files changed, 940 insertions(+), 3 deletions(-) create mode 100644 BudakovIS/428.md create mode 100644 DerbenevRY/428.md create mode 100644 KuzminskiyAA/427.md create mode 100644 KuznetsovAS/427.md create mode 100644 MashinDD/429.txt create mode 100644 MininaVD/427.txt create mode 100644 MininaVD/MininaVD create mode 100644 MusinAA/428b.md create mode 100644 MylnikovAS/427.md create mode 100644 ProninVV/427.md create mode 100644 ProninVV/file.txt create mode 100644 SimonovaMS/428.md create mode 100644 SimonovaMS/428.txt create mode 100644 SolovevDS/428b.md create mode 100644 VaravinVV/428b create mode 100644 VolkovVA/428b.md create mode 100644 YanyaevAA/428b.md create mode 100644 YaroslavtsevAS/428.md create mode 100644 ZelentsovAV/428b.md create mode 100644 anikinvd/428.md create mode 100644 chizhikovaSM/428.md create mode 100644 duznb/429.md.txt create mode 100644 filippovavm/427 create mode 100644 fomichevks/426.md.txt create mode 100644 ivanchenkoam/427.txt create mode 100644 ivantsovma/428.txt create mode 100644 kolesovve/427.md create mode 100644 komissarovgo/427.md create mode 100644 konnovaea/429 create mode 100644 kornevma/426.md create mode 100644 krasnovia/429.txt create mode 100644 lomakinae/426 create mode 100644 meosyam/428.md.txt create mode 100644 morozovns/1.py create mode 100644 morozovns/429 create mode 100644 nehoroshevaa/428b.md create mode 100644 nikolaevda/427.md create mode 100644 novikovsd/428 create mode 100644 osininyai/427.md create mode 100644 petryaninyas/README.md create mode 100644 petryaninyas/bst.py create mode 100644 petryaninyas/docs/data/delete.png create mode 100644 petryaninyas/docs/data/find.png create mode 100644 petryaninyas/docs/data/insert.png create mode 100644 petryaninyas/docs/data/results.csv create mode 100644 petryaninyas/docs/Отчёт по работе.docx create mode 100644 petryaninyas/experiments.py create mode 100644 petryaninyas/hash_table.py create mode 100644 petryaninyas/linked_list.py create mode 100644 petryaninyas/main.py create mode 100644 petryaninyas/plot_results.py create mode 100644 petryaninyas/requirements.txt create mode 100644 petryaninyas/results.csv create mode 100644 petryaninyas/utils.py create mode 100644 pogodinda/427.md.txt create mode 100644 pomelovsd/427 create mode 100644 raskatovia/429.md create mode 100644 romanovpv/427.md create mode 100644 semyanovra/426.md create mode 100644 shahovaa/429.md create mode 100644 shalovsa/429.txt create mode 100644 shekurovaa/429.md create mode 100644 skorohodovsa/427 create mode 100644 skorohodovsa/main.py create mode 100644 smirnovad/429.md create mode 100644 sobininaas/429.rtf create mode 100644 soldatkinao/428б.md create mode 100644 sorokinfi/427.md create mode 100644 stepinim/428.md create mode 100644 stepushovgs/427 create mode 100644 svetlakovkyu/426 create mode 100644 talantsevgi/427.txt create mode 100644 tseremonnikovaaa/427 create mode 100644 volkovim/428b.md create mode 100644 zaharoves/429.md create mode 100644 zverevem/429.txt diff --git a/.gitignore b/.gitignore index 5d381cc..bdf8835 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ __pycache__/ # C extensions *.so +.DS_Store # Distribution / packaging .Python build/ diff --git a/BudakovIS/428.md b/BudakovIS/428.md new file mode 100644 index 0000000..e69de29 diff --git a/DerbenevRY/428.md b/DerbenevRY/428.md new file mode 100644 index 0000000..e69de29 diff --git a/KuzminskiyAA/427.md b/KuzminskiyAA/427.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/KuzminskiyAA/427.md @@ -0,0 +1 @@ + diff --git a/KuznetsovAS/427.md b/KuznetsovAS/427.md new file mode 100644 index 0000000..e69de29 diff --git a/MashinDD/429.txt b/MashinDD/429.txt new file mode 100644 index 0000000..e69de29 diff --git a/MininaVD/427.txt b/MininaVD/427.txt new file mode 100644 index 0000000..ae507eb --- /dev/null +++ b/MininaVD/427.txt @@ -0,0 +1 @@ +427.txt diff --git a/MininaVD/MininaVD b/MininaVD/MininaVD new file mode 100644 index 0000000..ae507eb --- /dev/null +++ b/MininaVD/MininaVD @@ -0,0 +1 @@ +427.txt diff --git a/MusinAA/428b.md b/MusinAA/428b.md new file mode 100644 index 0000000..e69de29 diff --git a/MylnikovAS/427.md b/MylnikovAS/427.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/MylnikovAS/427.md @@ -0,0 +1 @@ + diff --git a/ProninVV/427.md b/ProninVV/427.md new file mode 100644 index 0000000000000000000000000000000000000000..7d1a49158979ab7e7df342b130dcda110d793702 GIT binary patch literal 12 TcmezW&xFBДля оформления результатов заведи папку **docs** в своей папке и сохраняй туда отчет (в любом формате от .doc до .md, а то и .jpnb). Вспомогательные файлы клади в подпапку **data** внутри **docs** + +**Цель работы** + +Реализовать три различные структуры данных «с нуля», применить их для хранения записей телефонного справочника и экспериментально сравнить производительность основных операций. Вы должны собственными руками написать код, чтобы понять внутреннее устройство связного списка, хеш-таблицы и двоичного дерева поиска, а также осознать их сильные и слабые стороны на практике. + +**!! Задание выполнять в структурной (процедурной) парадигме, не используя классы. Главное реализовать структуры данных «руками» и сравнить их производительность.** + +### Базовые операции (обязательны для всех): + +`insert(name, phone)` -- добавить или обновить запись. + +`find(name)` -- phone или None. + +`delete(name)` -- удалить запись, игнорировать отсутствие. + +`list_all()` -- список всех записей, отсортированный по имени (для BST in‑order обход; для списка и хеш‑таблицы — собрать и отсортировать явно). + +#### 1. Связный список (LinkedListPhoneBook) + +Узел представляется словарём: `{'name': 'Имя', 'phone': '123', 'next': None}.` + +**Функции:** + +`def ll_insert(head, name, phone)` — проходит до конца (или сразу добавляет в конец) и возвращает новую голову (если вставка в начало) или изменяет список по ссылке. Удобнее возвращать новую голову, если вставка может быть в начало. + +`def ll_find(head, name)` — ищет узел, возвращает телефон или None. + +`def ll_delete(head, name)` — удаляет узел, возвращает новую голову. + +`def ll_list_all(head)` — собирает все записи в список и сортирует (сортировка вынесена отдельно). + +#### 2. Хеш-таблица +Хранится как список buckets фиксированной длины, каждый элемент — голова связного списка (или None). + +**Функции:** + +`def ht_insert(buckets, name, phone)` — вычисляет индекс, вызывает ll_insert для соответствующего бакета. + +Аналогично `ht_find, ht_delete, ht_list_all` (последняя собирает все записи из всех бакетов и сортирует). + +#### 3. Двоичное дерево поиска +Узел — словарь: `{'name': 'Имя', 'phone': '123', 'left': None, 'right': None}.` + +**Функции:** + +`def bst_insert(root, name, phone)` — рекурсивно или итеративно вставляет, возвращает новый корень (если корень меняется). + +`def bst_find(root, name)` — поиск. + +`def bst_delete(root, name)` — удаление, возвращает новый корень. + +`def bst_list_all(root)` — центрированный обход (рекурсивно собирает записи в отсортированном порядке). + +### Экспериментальная часть (подробно об измерении времени) +#### 1. Генерация тестовых данных +Создайте список records из N элементов (например, N = 10000). Каждый элемент — кортеж (name, phone). + +Имена генерируйте как `f"User_{i:05d}"` (равномерное распределение) или случайные слова из небольшого набора (чтобы были повторения и коллизии). Для проверки влияния порядка подготовьте два варианта одного и того же набора: + +`records_shuffled` — случайный порядок. + +`records_sorted` — отсортированный по имени (по алфавиту). + +#### 2. Инструменты замера времени +Используйте модуль **time**: + +```python +import time + +start = time.perf_counter() +# ... операции ... +end = time.perf_counter() +elapsed = end - start # время в секундах +``` + +Для многократных замеров удобен `timeit`, но в этой задаче достаточно просто обернуть код в цикл и усреднить. + +#### 3. Проведение замеров +Для каждой структуры данных и для каждого режима входных данных (случайный / отсортированный) выполните: + +- А. Вставка всех записей + +Создайте пустую структуру. + +Засеките время, выполните insert для каждой записи из входного списка. + +Зафиксируйте общее время вставки. + +- Б. Поиск 100 случайных записей + +Возьмите 100 случайных имён из того же набора (гарантированно существующих) и 10 имён, которых нет (например, "None_{i}"). + +Засеките время на выполнение всех 110 вызовов find. + +- В. Удаление 50 случайных записей + +Выберите 50 случайных имён из набора. + +Засеките время на выполнение delete для каждого. + + +**!! Важно: после вставки структура остаётся заполненной, поиск и удаление выполняются на ней же. Если нужно повторить замер для другого порядка данных — создавайте новую структуру и заполняйте заново.** + +#### 4. Сохранение результатов + +**!! Каждый эксперимент повторить минимум 5 раз и записывать и среднее время, и все замеры.** + +Соберите все замеры в словарь или список, затем сохраните в CSV-файл: + +```python +import csv + +results = [ + ["Структура", "Режим", "Операция", "Время (сек)"], + ["LinkedList", "случайный", "вставка", 0.123], + ... +] + +with open("results.csv", "w", newline="") as f: + writer = csv.writer(f) + writer.writerows(results) +``` + + +#### 5. Анализ результатов +Постройте график (столбчатая диаграмма или линейный график) — можно в Excel, Google Sheets или с помощью matplotlib в Python. + +Сравните: + +- Как порядок входных данных влияет на скорость вставки в BST (деградация до O(n) на отсортированных данных). + +- Почему хеш-таблица почти не чувствительна к порядку. + +- Почему связный список всегда медленен при поиске. + +- Как удаление работает в каждой структуре. + +* Вывод должен содержать ответ на вопрос: какую структуру и для каких задач (частые вставки, частый поиск, необходимость получать данные в порядке) стоит выбирать в реальной жизни.* \ No newline at end of file diff --git a/SimonovaMS/428.md b/SimonovaMS/428.md new file mode 100644 index 0000000..e69de29 diff --git a/SimonovaMS/428.txt b/SimonovaMS/428.txt new file mode 100644 index 0000000..e69de29 diff --git a/SolovevDS/428b.md b/SolovevDS/428b.md new file mode 100644 index 0000000..e69de29 diff --git a/VaravinVV/428b b/VaravinVV/428b new file mode 100644 index 0000000..55f6d6f --- /dev/null +++ b/VaravinVV/428b @@ -0,0 +1 @@ +428b diff --git a/VolkovVA/428b.md b/VolkovVA/428b.md new file mode 100644 index 0000000..e69de29 diff --git a/YanyaevAA/428b.md b/YanyaevAA/428b.md new file mode 100644 index 0000000..e69de29 diff --git a/YaroslavtsevAS/428.md b/YaroslavtsevAS/428.md new file mode 100644 index 0000000..43d371a --- /dev/null +++ b/YaroslavtsevAS/428.md @@ -0,0 +1 @@ +428 diff --git a/ZelentsovAV/428b.md b/ZelentsovAV/428b.md new file mode 100644 index 0000000..e69de29 diff --git a/anikinvd/428.md b/anikinvd/428.md new file mode 100644 index 0000000..e69de29 diff --git a/chizhikovaSM/428.md b/chizhikovaSM/428.md new file mode 100644 index 0000000..e69de29 diff --git a/duznb/429.md.txt b/duznb/429.md.txt new file mode 100644 index 0000000..e69de29 diff --git a/filippovavm/427 b/filippovavm/427 new file mode 100644 index 0000000..d2a1e59 --- /dev/null +++ b/filippovavm/427 @@ -0,0 +1 @@ +427 diff --git a/fomichevks/426.md.txt b/fomichevks/426.md.txt new file mode 100644 index 0000000..e69de29 diff --git a/ivanchenkoam/427.txt b/ivanchenkoam/427.txt new file mode 100644 index 0000000..7e48d39 --- /dev/null +++ b/ivanchenkoam/427.txt @@ -0,0 +1 @@ +856 diff --git a/ivantsovma/428.txt b/ivantsovma/428.txt new file mode 100644 index 0000000..e69de29 diff --git a/kolesovve/427.md b/kolesovve/427.md new file mode 100644 index 0000000..e69de29 diff --git a/komissarovgo/427.md b/komissarovgo/427.md new file mode 100644 index 0000000000000000000000000000000000000000..7d1a49158979ab7e7df342b130dcda110d793702 GIT binary patch literal 12 TcmezW&xFB Node: + return {"name": name, "phone": phone, "left": None, "right": None} + + +def bst_insert(root: Optional[Node], name: str, phone: str) -> Node: + new_node = _make_node(name, phone) + + if root is None: + return new_node + + current = root + parent = None + + while current is not None: + parent = current + if name < current["name"]: + current = current["left"] + elif name > current["name"]: + current = current["right"] + else: + current["phone"] = phone + return root + + if name < parent["name"]: + parent["left"] = new_node + else: + parent["right"] = new_node + + return root + + +def bst_find(root: Optional[Node], name: str) -> Optional[str]: + current = root + while current is not None: + if name < current["name"]: + current = current["left"] + elif name > current["name"]: + current = current["right"] + else: + return current["phone"] + return None + + +def _find_min_node(node: Node) -> Node: + current = node + while current["left"] is not None: + current = current["left"] + return current + + +def bst_delete(root: Optional[Node], name: str) -> Optional[Node]: + if root is None: + return None + + parent = None + current = root + + while current is not None and current["name"] != name: + parent = current + if name < current["name"]: + current = current["left"] + else: + current = current["right"] + + if current is None: + return root + + if current["left"] is None or current["right"] is None: + child = current["left"] if current["left"] is not None else current["right"] + + if parent is None: + return child + + if parent["left"] is current: + parent["left"] = child + else: + parent["right"] = child + return root + + succ_parent = current + successor = current["right"] + while successor["left"] is not None: + succ_parent = successor + successor = successor["left"] + + current["name"] = successor["name"] + current["phone"] = successor["phone"] + + successor_child = successor["right"] + if succ_parent["left"] is successor: + succ_parent["left"] = successor_child + else: + succ_parent["right"] = successor_child + + return root + + +def bst_list_all(root: Optional[Node]) -> List[Dict[str, str]]: + result: List[Dict[str, str]] = [] + stack: List[Node] = [] + current = root + + while current is not None or stack: + while current is not None: + stack.append(current) + current = current["left"] + + current = stack.pop() + result.append({"name": current["name"], "phone": current["phone"]}) + current = current["right"] + + return result diff --git a/petryaninyas/docs/data/delete.png b/petryaninyas/docs/data/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec49426ffce981b159b953614baa71b5f60362c GIT binary patch literal 65600 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 literal 0 HcmV?d00001 diff --git a/petryaninyas/docs/data/find.png b/petryaninyas/docs/data/find.png new file mode 100644 index 0000000000000000000000000000000000000000..2868e6c61460c83add2c2fffe9e5aec25a02926a GIT binary patch literal 65132 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 Yb6?+gr#4(EmuoT}H`yq1?A$f~1r?Bk(*OVf literal 0 HcmV?d00001 diff --git a/petryaninyas/docs/data/insert.png b/petryaninyas/docs/data/insert.png new file mode 100644 index 0000000000000000000000000000000000000000..5c0e4fffe08cb021ea5036c21c5a94da7bd79461 GIT binary patch literal 61144 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%0DiqvI|Y-(MI!0}VL3ajU+&e*6!(ptrZj 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 fA6ffVPbBToDj>j{6_~sj75-u literal 0 HcmV?d00001 diff --git a/petryaninyas/experiments.py b/petryaninyas/experiments.py new file mode 100644 index 0000000..f5face1 --- /dev/null +++ b/petryaninyas/experiments.py @@ -0,0 +1,172 @@ +from __future__ import annotations + +import csv +import random +import time +from pathlib import Path +from typing import Dict, List, Tuple + +from linked_list import ll_insert, ll_find, ll_delete +from hash_table import ht_insert, ht_find, ht_delete +from bst import bst_insert, bst_find, bst_delete +from utils import generate_records, prepare_records_variants + + +Record = Tuple[str, str] + + +def make_missing_names(count: int = 10) -> List[str]: + return [f"None_{i}" for i in range(count)] + + +def pick_existing_names(records: List[Record], count: int, seed: int = 42) -> List[str]: + rng = random.Random(seed) + unique_names = list(dict.fromkeys(name for name, _ in records)) + if len(unique_names) < count: + raise ValueError(f"Not enough unique names: need {count}, got {len(unique_names)}") + return rng.sample(unique_names, count) + + +def pick_delete_names(records: List[Record], count: int = 50, seed: int = 43) -> List[str]: + rng = random.Random(seed) + unique_names = list(dict.fromkeys(name for name, _ in records)) + if len(unique_names) < count: + raise ValueError(f"Not enough unique names: need {count}, got {len(unique_names)}") + return rng.sample(unique_names, count) + + +def build_structure(structure_name: str, records: List[Record], buckets_count: int = 2048): + if structure_name == "linked_list": + structure = None + for name, phone in records: + structure = ll_insert(structure, name, phone) + return structure + + if structure_name == "hash_table": + buckets = [None] * buckets_count + for name, phone in records: + buckets = ht_insert(buckets, name, phone) + return buckets + + if structure_name == "bst": + root = None + for name, phone in records: + root = bst_insert(root, name, phone) + return root + + raise ValueError(f"Unknown structure: {structure_name}") + + +def do_find(structure_name: str, structure: object, existing_names: List[str], missing_names: List[str]) -> None: + if structure_name == "linked_list": + for name in existing_names: + ll_find(structure, name) + for name in missing_names: + ll_find(structure, name) + return + + if structure_name == "hash_table": + for name in existing_names: + ht_find(structure, name) + for name in missing_names: + ht_find(structure, name) + return + + if structure_name == "bst": + for name in existing_names: + bst_find(structure, name) + for name in missing_names: + bst_find(structure, name) + return + + raise ValueError(f"Unknown structure: {structure_name}") + + +def do_delete(structure_name: str, structure: object, delete_names: List[str]): + if structure_name == "linked_list": + for name in delete_names: + structure = ll_delete(structure, name) + return structure + + if structure_name == "hash_table": + for name in delete_names: + structure = ht_delete(structure, name) + return structure + + if structure_name == "bst": + for name in delete_names: + structure = bst_delete(structure, name) + return structure + + raise ValueError(f"Unknown structure: {structure_name}") + + +def measure_once(structure_name: str, records: List[Record], buckets_count: int = 2048) -> Dict[str, float]: + existing_names = pick_existing_names(records, 100, seed=42) + missing_names = make_missing_names(10) + delete_names = pick_delete_names(records, 50, seed=43) + + start = time.perf_counter() + structure = build_structure(structure_name, records, buckets_count=buckets_count) + insert_time = time.perf_counter() - start + + start = time.perf_counter() + do_find(structure_name, structure, existing_names, missing_names) + find_time = time.perf_counter() - start + + start = time.perf_counter() + structure = do_delete(structure_name, structure, delete_names) + delete_time = time.perf_counter() - start + + return {"insert": insert_time, "find": find_time, "delete": delete_time} + + +def run_experiments(n: int = 10000, buckets_count: int = 2048, repeats: int = 5): + records = generate_records(n, repeat_names=False) + records_shuffled, records_sorted = prepare_records_variants(records) + + datasets = [ + ("случайный", records_shuffled), + ("отсортированный", records_sorted), + ] + structures = [ + ("LinkedList", "linked_list"), + ("HashTable", "hash_table"), + ("BST", "bst"), + ] + operations = ("insert", "find", "delete") + + rows = [["Структура", "Режим", "Операция", "Замер", "Время (сек)"]] + + for mode_name, dataset_records in datasets: + for human_name, structure_name in structures: + times_by_op = {op: [] for op in operations} + + for attempt in range(1, repeats + 1): + result = measure_once(structure_name, dataset_records, buckets_count=buckets_count) + for op_name in operations: + elapsed = result[op_name] + times_by_op[op_name].append(elapsed) + rows.append([human_name, mode_name, op_name, attempt, f"{elapsed:.10f}"]) + + for op_name in operations: + avg_time = sum(times_by_op[op_name]) / len(times_by_op[op_name]) + rows.append([human_name, mode_name, op_name, "среднее", f"{avg_time:.10f}"]) + + return rows + + +def save_results_csv(rows, filename: str = "results.csv"): + with open(filename, "w", newline="", encoding="utf-8") as f: + writer = csv.writer(f) + writer.writerows(rows) + + +def main(): + rows = run_experiments(n=10000, buckets_count=2048, repeats=5) + save_results_csv(rows, "results.csv") + print("Saved results.csv") + + +if __name__ == "__main__": + main() diff --git a/petryaninyas/hash_table.py b/petryaninyas/hash_table.py new file mode 100644 index 0000000..9aa720d --- /dev/null +++ b/petryaninyas/hash_table.py @@ -0,0 +1,44 @@ + + +from typing import Any, Dict, List, Optional + +from linked_list import ll_insert, ll_find, ll_delete, ll_list_all + + +Bucket = Optional[Dict[str, Any]] + + +def _hash_name(name: str, buckets_count: int) -> int: + if buckets_count <= 0: + return 0 + return sum(ord(ch) for ch in name) % buckets_count + + +def ht_insert(buckets: List[Bucket], name: str, phone: str) -> List[Bucket]: + if not buckets: + return buckets + index = _hash_name(name, len(buckets)) + buckets[index] = ll_insert(buckets[index], name, phone) + return buckets + + +def ht_find(buckets: List[Bucket], name: str) -> Optional[str]: + if not buckets: + return None + index = _hash_name(name, len(buckets)) + return ll_find(buckets[index], name) + + +def ht_delete(buckets: List[Bucket], name: str) -> List[Bucket]: + if not buckets: + return buckets + index = _hash_name(name, len(buckets)) + buckets[index] = ll_delete(buckets[index], name) + return buckets + + +def ht_list_all(buckets: List[Bucket]) -> List[Dict[str, str]]: + records: List[Dict[str, str]] = [] + for head in buckets: + records.extend(ll_list_all(head)) + return sorted(records, key=lambda x: x["name"]) diff --git a/petryaninyas/linked_list.py b/petryaninyas/linked_list.py new file mode 100644 index 0000000..0260036 --- /dev/null +++ b/petryaninyas/linked_list.py @@ -0,0 +1,73 @@ + + +from typing import Any, Dict, List, Optional + + +Node = Dict[str, Any] + + +def _make_node(name: str, phone: str) -> Node: + return {"name": name, "phone": phone, "next": None} + + +def sort_records(records: List[Dict[str, str]]) -> List[Dict[str, str]]: + + return sorted(records, key=lambda x: x["name"]) + + +def ll_insert(head: Optional[Node], name: str, phone: str) -> Node: + + new_node = _make_node(name, phone) + + if head is None: + return new_node + + current = head + while current is not None: + if current["name"] == name: + current["phone"] = phone + return head + if current["next"] is None: + current["next"] = new_node + return head + current = current["next"] + + return head + + +def ll_find(head: Optional[Node], name: str) -> Optional[str]: + current = head + while current is not None: + if current["name"] == name: + return current["phone"] + current = current["next"] + return None + + +def ll_delete(head: Optional[Node], name: str) -> Optional[Node]: + if head is None: + return None + + if head["name"] == name: + return head["next"] + + prev = head + current = head["next"] + + while current is not None: + if current["name"] == name: + prev["next"] = current["next"] + return head + prev = current + current = current["next"] + + return head + + +def ll_list_all(head: Optional[Node]) -> List[Dict[str, str]]: + records: List[Dict[str, str]] = [] + current = head + while current is not None: + records.append({"name": current["name"], "phone": current["phone"]}) + current = current["next"] + return sort_records(records) diff --git a/petryaninyas/main.py b/petryaninyas/main.py new file mode 100644 index 0000000..70de618 --- /dev/null +++ b/petryaninyas/main.py @@ -0,0 +1,21 @@ + + +from __future__ import annotations + +import csv +from pathlib import Path + +from experiments import run_experiments, save_results_csv +from plot_results import build_graphs, load_average_results + + +def main(): + rows = run_experiments(n=10000, buckets_count=2048, repeats=5) + save_results_csv(rows, "results.csv") + averaged = load_average_results("results.csv") + build_graphs(averaged, output_dir="docs/data") + print("Done.") + + +if __name__ == "__main__": + main() diff --git a/petryaninyas/plot_results.py b/petryaninyas/plot_results.py new file mode 100644 index 0000000..f6b9d3a --- /dev/null +++ b/petryaninyas/plot_results.py @@ -0,0 +1,66 @@ +from __future__ import annotations +import csv +from collections import defaultdict +from pathlib import Path +import matplotlib.pyplot as plt +from typing import List, Dict, Any + +# Карта соответствия заголовков CSV для удобства поддержки +_CSV_KEYS = { + "STRUCTURE": "Структура", + "MODE": "Режим", + "OP": "Операция", + "MEASURE": "Замер", + "TIME": "Время (сек)" +} + +def load_average_results(csv_file: str) -> List[Dict[str, Any]]: + """Загружает только строки со средними значениями из CSV.""" + with open(csv_file, "r", encoding="utf-8") as fh: + return [ + { + "structure": row[_CSV_KEYS["STRUCTURE"]], + "mode": row[_CSV_KEYS["MODE"]], + "operation": row[_CSV_KEYS["OP"]], + "time": float(row[_CSV_KEYS["TIME"]]) + } + for row in csv.DictReader(fh) + if row[_CSV_KEYS["MEASURE"]] == "среднее" + ] + +def _render_chart(operation: str, data: List[Dict[str, Any]], save_path: Path) -> None: + """Вспомогательная функция для отрисовки одного столбчатого графика.""" + fig, ax = plt.subplots(figsize=(10, 5)) + labels = [f"{rec['structure']}\n{rec['mode']}" for rec in data] + values = [rec["time"] for rec in data] + + ax.bar(labels, values, color="cornflowerblue", edgecolor="navy") + ax.set_title(f"{operation.capitalize()} Performance Comparison") + ax.set_xlabel("Data Structure & Input Order") + ax.set_ylabel("Execution Time (seconds)") + ax.tick_params(axis="x", rotation=15) + fig.tight_layout() + fig.savefig(save_path, dpi=150) + plt.close(fig) + print(f"Saved chart: {save_path}") + +def build_graphs(results: List[Dict[str, Any]], output_dir: str = "docs/data") -> None: + """Группирует результаты по операциям и сохраняет графики.""" + out_path = Path(output_dir) + out_path.mkdir(parents=True, exist_ok=True) + + grouped = defaultdict(list) + for record in results: + grouped[record["operation"]].append(record) + + for op_name in ("insert", "find", "delete"): + if op_name in grouped: + target_file = out_path / f"{op_name}.png" + _render_chart(op_name, grouped[op_name], target_file) + +def main(): + avg_data = load_average_results("results.csv") + build_graphs(avg_data) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/petryaninyas/requirements.txt b/petryaninyas/requirements.txt new file mode 100644 index 0000000..a9006fd --- /dev/null +++ b/petryaninyas/requirements.txt @@ -0,0 +1 @@ +matplotlib>=3.8 diff --git a/petryaninyas/results.csv b/petryaninyas/results.csv new file mode 100644 index 0000000..4624802 --- /dev/null +++ b/petryaninyas/results.csv @@ -0,0 +1,109 @@ +Структура,Режим,Операция,Замер,Время (сек) +LinkedList,случайный,insert,1,6.8132659000 +LinkedList,случайный,find,1,0.0553455000 +LinkedList,случайный,delete,1,0.0304272000 +LinkedList,случайный,insert,2,6.8263299000 +LinkedList,случайный,find,2,0.0562645000 +LinkedList,случайный,delete,2,0.0303858000 +LinkedList,случайный,insert,3,6.8117682000 +LinkedList,случайный,find,3,0.0567219000 +LinkedList,случайный,delete,3,0.0302671000 +LinkedList,случайный,insert,4,7.0393228000 +LinkedList,случайный,find,4,0.0544359000 +LinkedList,случайный,delete,4,0.0313359000 +LinkedList,случайный,insert,5,7.0633509000 +LinkedList,случайный,find,5,0.0552176000 +LinkedList,случайный,delete,5,0.0318664000 +LinkedList,случайный,insert,среднее,6.9108075400 +LinkedList,случайный,find,среднее,0.0555970800 +LinkedList,случайный,delete,среднее,0.0308564800 +HashTable,случайный,insert,1,0.3898307000 +HashTable,случайный,find,1,0.0022226000 +HashTable,случайный,delete,1,0.0012723000 +HashTable,случайный,insert,2,0.3844561000 +HashTable,случайный,find,2,0.0024825000 +HashTable,случайный,delete,2,0.0013425000 +HashTable,случайный,insert,3,0.3740853000 +HashTable,случайный,find,3,0.0026141000 +HashTable,случайный,delete,3,0.0013710000 +HashTable,случайный,insert,4,0.3870099000 +HashTable,случайный,find,4,0.0022063000 +HashTable,случайный,delete,4,0.0015940000 +HashTable,случайный,insert,5,0.3869087000 +HashTable,случайный,find,5,0.0022110000 +HashTable,случайный,delete,5,0.0012524000 +HashTable,случайный,insert,среднее,0.3844581400 +HashTable,случайный,find,среднее,0.0023473000 +HashTable,случайный,delete,среднее,0.0013664400 +BST,случайный,insert,1,0.0375842000 +BST,случайный,find,1,0.0003637000 +BST,случайный,delete,1,0.0001893000 +BST,случайный,insert,2,0.0364385000 +BST,случайный,find,2,0.0003284000 +BST,случайный,delete,2,0.0002408000 +BST,случайный,insert,3,0.0359604000 +BST,случайный,find,3,0.0003705000 +BST,случайный,delete,3,0.0001883000 +BST,случайный,insert,4,0.0371920000 +BST,случайный,find,4,0.0003347000 +BST,случайный,delete,4,0.0001711000 +BST,случайный,insert,5,0.0385580000 +BST,случайный,find,5,0.0003628000 +BST,случайный,delete,5,0.0001828000 +BST,случайный,insert,среднее,0.0371466200 +BST,случайный,find,среднее,0.0003520200 +BST,случайный,delete,среднее,0.0001944600 +LinkedList,отсортированный,insert,1,6.7166487000 +LinkedList,отсортированный,find,1,0.0614362000 +LinkedList,отсортированный,delete,1,0.0324487000 +LinkedList,отсортированный,insert,2,6.8582294000 +LinkedList,отсортированный,find,2,0.0588546000 +LinkedList,отсортированный,delete,2,0.0332572000 +LinkedList,отсортированный,insert,3,6.6991410000 +LinkedList,отсортированный,find,3,0.0521304000 +LinkedList,отсортированный,delete,3,0.0296734000 +LinkedList,отсортированный,insert,4,6.7166336000 +LinkedList,отсортированный,find,4,0.0521848000 +LinkedList,отсортированный,delete,4,0.0286064000 +LinkedList,отсортированный,insert,5,6.6510829000 +LinkedList,отсортированный,find,5,0.0547075000 +LinkedList,отсортированный,delete,5,0.0285625000 +LinkedList,отсортированный,insert,среднее,6.7283471200 +LinkedList,отсортированный,find,среднее,0.0558627000 +LinkedList,отсортированный,delete,среднее,0.0305096400 +HashTable,отсортированный,insert,1,0.3645209000 +HashTable,отсортированный,find,1,0.0032770000 +HashTable,отсортированный,delete,1,0.0018631000 +HashTable,отсортированный,insert,2,0.3579217000 +HashTable,отсортированный,find,2,0.0032143000 +HashTable,отсортированный,delete,2,0.0016427000 +HashTable,отсортированный,insert,3,0.3684879000 +HashTable,отсортированный,find,3,0.0026412000 +HashTable,отсортированный,delete,3,0.0014870000 +HashTable,отсортированный,insert,4,0.3873619000 +HashTable,отсортированный,find,4,0.0028024000 +HashTable,отсортированный,delete,4,0.0015786000 +HashTable,отсортированный,insert,5,0.3642992000 +HashTable,отсортированный,find,5,0.0031264000 +HashTable,отсортированный,delete,5,0.0015886000 +HashTable,отсортированный,insert,среднее,0.3685183200 +HashTable,отсортированный,find,среднее,0.0030122600 +HashTable,отсортированный,delete,среднее,0.0016320000 +BST,отсортированный,insert,1,10.5552378000 +BST,отсортированный,find,1,0.1016856000 +BST,отсортированный,delete,1,0.0422728000 +BST,отсортированный,insert,2,10.3035871000 +BST,отсортированный,find,2,0.1008642000 +BST,отсортированный,delete,2,0.0450330000 +BST,отсортированный,insert,3,10.6304005000 +BST,отсортированный,find,3,0.1073470000 +BST,отсортированный,delete,3,0.0816121000 +BST,отсортированный,insert,4,10.3183078000 +BST,отсортированный,find,4,0.1005074000 +BST,отсортированный,delete,4,0.0422195000 +BST,отсортированный,insert,5,10.3131368000 +BST,отсортированный,find,5,0.1001096000 +BST,отсортированный,delete,5,0.0416660000 +BST,отсортированный,insert,среднее,10.4241340000 +BST,отсортированный,find,среднее,0.1021027600 +BST,отсортированный,delete,среднее,0.0505606800 diff --git a/petryaninyas/utils.py b/petryaninyas/utils.py new file mode 100644 index 0000000..2befe4b --- /dev/null +++ b/petryaninyas/utils.py @@ -0,0 +1,29 @@ +import random +from typing import List, Tuple + +Record = Tuple[str, str] + +NAME_POOL = ( + "User_Alex", "User_Bob", "User_Cat", "User_Dan", "User_Eva", + "User_Fox", "User_Geo", "User_Hen", "User_Ira", "User_Leo" +) + +def generate_records(n: int, repeat_names: bool = False, seed: int = 42) -> List[Record]: + """Генерирует n кортежей (имя, телефон).""" + rng = random.Random(seed) + if repeat_names: + return [ + (rng.choice(NAME_POOL), str(rng.randint(10**9, 10**10 - 1))) + for _ in range(n) + ] + return [ + (f"User_{i:05d}", str(10**9 + i)) + for i in range(n) + ] + +def prepare_records_variants(records: List[Record], seed: int = 42) -> Tuple[List[Record], List[Record]]: + """Возвращает пару: (перемешанный список, отсортированный по имени список).""" + shuffled = records.copy() + random.Random(seed).shuffle(shuffled) + sorted_records = sorted(records, key=lambda rec: rec[0]) + return shuffled, sorted_records \ No newline at end of file diff --git a/pogodinda/427.md.txt b/pogodinda/427.md.txt new file mode 100644 index 0000000..e69de29 diff --git a/pomelovsd/427 b/pomelovsd/427 new file mode 100644 index 0000000..acf052b --- /dev/null +++ b/pomelovsd/427 @@ -0,0 +1 @@ +427 diff --git a/raskatovia/429.md b/raskatovia/429.md new file mode 100644 index 0000000000000000000000000000000000000000..a90fd095e527def53ccb8ccde5af3a5412c8b5e9 GIT binary patch literal 72 zcmezWPlm;g#h*oi!GXnq#SqAL0@Az;TnxxKm?4!RnIWGck0FIYfuWe8lp%>Bmmw3# JDh84uaR8hJ3t#{M literal 0 HcmV?d00001 diff --git a/romanovpv/427.md b/romanovpv/427.md new file mode 100644 index 0000000..e69de29 diff --git a/semyanovra/426.md b/semyanovra/426.md new file mode 100644 index 0000000..e69de29 diff --git a/shahovaa/429.md b/shahovaa/429.md new file mode 100644 index 0000000..e69de29 diff --git a/shalovsa/429.txt b/shalovsa/429.txt new file mode 100644 index 0000000..e69de29 diff --git a/shekurovaa/429.md b/shekurovaa/429.md new file mode 100644 index 0000000..e69de29 diff --git a/skorohodovsa/427 b/skorohodovsa/427 new file mode 100644 index 0000000..acf052b --- /dev/null +++ b/skorohodovsa/427 @@ -0,0 +1 @@ +427 diff --git a/skorohodovsa/main.py b/skorohodovsa/main.py new file mode 100644 index 0000000..ba8db40 --- /dev/null +++ b/skorohodovsa/main.py @@ -0,0 +1,4 @@ +from math import sin + +for i in range(10000): + print(" " * round(50 * (1 + sin(i/100))), "Hello World!") diff --git a/smirnovad/429.md b/smirnovad/429.md new file mode 100644 index 0000000..e69de29 diff --git a/sobininaas/429.rtf b/sobininaas/429.rtf new file mode 100644 index 0000000..02f05c1 --- /dev/null +++ b/sobininaas/429.rtf @@ -0,0 +1,6 @@ +{\rtf1\ansi\ansicpg1251\cocoartf2761 +\cocoatextscaling0\cocoaplatform0{\fonttbl} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 +} \ No newline at end of file diff --git a/soldatkinao/428б.md b/soldatkinao/428б.md new file mode 100644 index 0000000..cf53638 --- /dev/null +++ b/soldatkinao/428б.md @@ -0,0 +1 @@ + 뢮 ࠭ (ECHO) 祭. diff --git a/sorokinfi/427.md b/sorokinfi/427.md new file mode 100644 index 0000000..e69de29 diff --git a/stepinim/428.md b/stepinim/428.md new file mode 100644 index 0000000..e69de29 diff --git a/stepushovgs/427 b/stepushovgs/427 new file mode 100644 index 0000000..d2a1e59 --- /dev/null +++ b/stepushovgs/427 @@ -0,0 +1 @@ +427 diff --git a/svetlakovkyu/426 b/svetlakovkyu/426 new file mode 100644 index 0000000..e69de29 diff --git a/talantsevgi/427.txt b/talantsevgi/427.txt new file mode 100644 index 0000000..b610fc3 --- /dev/null +++ b/talantsevgi/427.txt @@ -0,0 +1 @@ +732489234 diff --git a/tseremonnikovaaa/427 b/tseremonnikovaaa/427 new file mode 100644 index 0000000..acf052b --- /dev/null +++ b/tseremonnikovaaa/427 @@ -0,0 +1 @@ +427 diff --git a/volkovim/428b.md b/volkovim/428b.md new file mode 100644 index 0000000..225a97e --- /dev/null +++ b/volkovim/428b.md @@ -0,0 +1 @@ +428b diff --git a/zaharoves/429.md b/zaharoves/429.md new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/zaharoves/429.md @@ -0,0 +1 @@ + diff --git a/zverevem/429.txt b/zverevem/429.txt new file mode 100644 index 0000000..e69de29