From 07dc80bee268a1a84ea328d268fe743df3376c25 Mon Sep 17 00:00:00 2001 From: Alexander Date: Mon, 25 May 2026 00:05:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=93=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B8=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BC=D0=B5=D1=80=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KuzminskiyAA/Task 1/Dogs/Data/1.py | 38 +++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/KuzminskiyAA/Task 1/Dogs/Data/1.py b/KuzminskiyAA/Task 1/Dogs/Data/1.py index 0007616..84c374c 100644 --- a/KuzminskiyAA/Task 1/Dogs/Data/1.py +++ b/KuzminskiyAA/Task 1/Dogs/Data/1.py @@ -123,4 +123,40 @@ def bst_list_all(root): records.extend(bst_list_all(root['left'])) records.append((root['name'], root['phone'])) records.extend(bst_list_all(root['right'])) - return records \ No newline at end of file + return records +def generate_data(n=2000): + random_data = [(f"User_{i:05d}", str(i)) for i in range(n)] + random.shuffle(random_data) + sorted_data = sorted(random_data, key=lambda x: x[0]) + return random_data, sorted_data +def run_test(data, struct_name, create, insert, find, delete): + times = {'insert': [], 'search': [], 'delete': []} + + for _ in range(5): + s = create() + + start = time.perf_counter() + if struct_name == 'LinkedList' or struct_name == 'BST': + for name, phone in data: + s = insert(s, name, phone) + else: + for name, phone in data: + insert(s, name, phone) + times['insert'].append(time.perf_counter() - start) + + names = [random.choice(data)[0] for _ in range(100)] + [f"None_{i}" for i in range(10)] + start = time.perf_counter() + for name in names: + find(s, name) + times['search'].append(time.perf_counter() - start) + + del_names = [random.choice(data)[0] for _ in range(50)] + start = time.perf_counter() + for name in del_names: + if struct_name == 'LinkedList' or struct_name == 'BST': + s = delete(s, name) + else: + delete(s, name) + times['delete'].append(time.perf_counter() - start) + + return {op: sum(t)/len(t) for op, t in times.items()} \ No newline at end of file