From 0352511b04d93fa32cd7bb7ab0c5c23a5b811f09 Mon Sep 17 00:00:00 2001 From: mddcorporation Date: Sat, 21 Mar 2026 20:52:48 +0300 Subject: [PATCH] [2] fixed missing folder --- VaravinVV/docs/data/performance_plots.png | Bin 0 -> 59247 bytes VaravinVV/docs/data/res.csv | 31 +++ VaravinVV/docs/data/tables.py | 51 ++++ VaravinVV/docs/data/task1_1.py | 282 ++++++++++++++++++++++ VaravinVV/docs/task1_report.docx | 0 VaravinVV/docs/~$sk1_report.docx | Bin 0 -> 162 bytes 6 files changed, 364 insertions(+) create mode 100644 VaravinVV/docs/data/performance_plots.png create mode 100644 VaravinVV/docs/data/res.csv create mode 100644 VaravinVV/docs/data/tables.py create mode 100644 VaravinVV/docs/data/task1_1.py create mode 100644 VaravinVV/docs/task1_report.docx create mode 100644 VaravinVV/docs/~$sk1_report.docx diff --git a/VaravinVV/docs/data/performance_plots.png b/VaravinVV/docs/data/performance_plots.png new file mode 100644 index 0000000000000000000000000000000000000000..f113c69413f10079db27340c1ee2842411e5e6bb GIT binary patch literal 59247 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

11G&9&h9q9j&ia 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 m=>L3fSh){7`9GUzNP!f8Nw?Vu root['name']: + root['right'] = bst_delete(root['right'], name) + else: + if root['left'] is None: + return root['right'] + if root['right'] is None: + return root['left'] + + min_node = find_min(root['right']) + root['name'] = min_node['name'] + root['phone'] = min_node['phone'] + root['right'] = bst_delete(root['right'], min_node['name']) + return root + + +def bst_list_all(root): + result = [] + + def inorder(node): + if node is None: + return + inorder(node['left']) + result.append((node['name'], node['phone'])) + inorder(node['right']) + + inorder(root) + return result + +def generate_records(n, seed=50): #почти в точности позаимствовано, просто понял что можно уже существующие в отдельный список заносить + random.seed(seed) + records = [] + for i in range(1, n + 1): + name = f"User_{i:05d}" + phone = "8" + ''.join(str(random.randint(0, 9)) for _ in range(10)) + records.append((name, phone)) + return records + +def prepare_datasets(base_records): + shuffled = base_records.copy() + random.shuffle(shuffled) + sorted_records = sorted(base_records, key=lambda x: x[0]) + return shuffled, sorted_records + +def run_experiment(struct_funcs, records, mode_name, repeats=5): + results = [] + for rep in range(repeats): + struct = struct_funcs['create']() + + start = time.perf_counter() + for name, phone in records: + struct = struct_funcs['insert'](struct, name, phone) + end = time.perf_counter() + insert_time = end - start + + existing_names = [name for name, _ in records] + sample_existing = random.sample(existing_names, 100) + nonexistent = [f"None_{i}" for i in range(10)] + search_names = sample_existing + nonexistent + random.shuffle(search_names) + + start = time.perf_counter() + for name in search_names: + _ = struct_funcs['find'](struct, name) + end = time.perf_counter() + find_time = end - start + + to_delete = random.sample(existing_names, 10) + start = time.perf_counter() + for name in to_delete: + struct = struct_funcs['delete'](struct, name) + end = time.perf_counter() + delete_time = end - start + + results.append({ + 'structure': struct_funcs['name'], + 'mode': mode_name, + 'repetition': rep + 1, + 'insert_time': insert_time, + 'find_time': find_time, + 'delete_time': delete_time + }) + return results + +def main(): + N = 1000 + base_records = generate_records(N) + shuffled, sorted_records = prepare_datasets(base_records) + + structures = { + 'LinkedList': { + 'name': 'LinkedList', + 'create': lambda: None, + 'insert': ll_insert, + 'find': ll_find, + 'delete': ll_delete, + 'list_all': ll_list_all + }, + 'HashTable': { + 'name': 'HashTable', + 'create': lambda: [None] * 10, + 'insert': ht_insert, + 'find': ht_find, + 'delete': ht_delete, + 'list_all': ht_list_all + }, + 'BST': { + 'name': 'BST', + 'create': lambda: None, + 'insert': bst_insert, + 'find': bst_find, + 'delete': bst_delete, + 'list_all': bst_list_all + } + } + + all_results = [] + repeats = 5 + + for struct_name, funcs in structures.items(): + print(f"Тестирование {struct_name} на случайном порядке...") + res = run_experiment(funcs, shuffled, 'random', repeats) + all_results.extend(res) + + print(f"Тестирование {struct_name} на отсортированном порядке...") + res = run_experiment(funcs, sorted_records, 'sorted', repeats) + all_results.extend(res) + + with open('res.csv', 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + writer.writerow(['Structure', 'Mode', 'Repeat', 'Insert (sec)', 'Search (sec)', 'Delete (sec)']) + for r in all_results: + writer.writerow([ + r['structure'], + r['mode'], + r['repetition'], + f"{r['insert_time']:.6f}", + f"{r['find_time']:.6f}", + f"{r['delete_time']:.6f}" + ]) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/VaravinVV/docs/task1_report.docx b/VaravinVV/docs/task1_report.docx new file mode 100644 index 0000000..e69de29 diff --git a/VaravinVV/docs/~$sk1_report.docx b/VaravinVV/docs/~$sk1_report.docx new file mode 100644 index 0000000000000000000000000000000000000000..25ba8358377364bf7600f02d884fbe8e77d8deab GIT binary patch literal 162 zcmZS0ElNqvWgro-GUPH8F{Ci00%;I%@Z7GH$B1bN6Pi$W#K(mZJMS<~F3pf literal 0 HcmV?d00001