From 191fc23b529057339478ff611075266e6262f84b Mon Sep 17 00:00:00 2001 From: mddcorporation Date: Sat, 21 Mar 2026 15:21:43 +0300 Subject: [PATCH] reworking --- VaravinVV/task1_1.py | 69 ++++++++++++-------------------------------- 1 file changed, 19 insertions(+), 50 deletions(-) diff --git a/VaravinVV/task1_1.py b/VaravinVV/task1_1.py index fcef729..204a936 100644 --- a/VaravinVV/task1_1.py +++ b/VaravinVV/task1_1.py @@ -1,30 +1,25 @@ -import random, time, csv -N = [] +import random +import time +import csv +import sys -for n in range(10000): # вот сначала просят сгенерировать а потом 100 гарантированных имён ну ёмаё💀💀💀 - i = random.randint(1,99999) - p = random.randint(10000000, 99999999) - N.append((f"User_{i:05d}", str(p))) # как в примере кортежики брбрбр - -#короче тупо в лоб, там всё равно вставка списка повторы не допускает (ну телефон обновится) -for i in range(100): - N.append((f"User_{i:05d}", str(f'{i:08d}'))) +sys.setrecursionlimit(20000) def ll_insert(head, name, phone): - - data = {'name' : name, 'phone' : phone, "next" : None} + data = {'name': name, 'phone': phone, "next": None} if head is None: return data + current = head while current: if current['name'] == name: current['phone'] = phone return head - if current['next'] == None: + if current['next'] is None: last = current - current = current['next'] # везде где такое это изменение текущей строки на следующую через ссылку в нексте - + current = current['next'] + last['next'] = data return head @@ -37,9 +32,14 @@ def ll_find(head, name): current = current['next'] return None + def ll_delete(head, name): if head is None: return None + + if head['name'] == name: + return head['next'] + prev = head current = head['next'] while current: @@ -50,43 +50,12 @@ def ll_delete(head, name): current = current['next'] return head + def ll_list_all(head): data_list = [] - current = head while current: - data_list.append({'name' : current['name'], 'phone' : current['phone']}) + data_list.append({'name': current['name'], 'phone': current['phone']}) current = current['next'] - - data_list.sort(key=lambda x: x['name']) # честно украдено со стака оверфлоу и не понял что такое лямбда я устал читать - return data_list - -#1 - вставка списка -start_time = time.perf_counter() -data_unsorted = None -for name, phone in N: - data_unsorted = ll_insert(data_unsorted, name, phone) -end_time = time.perf_counter() -elapsed_time_1_1 = end_time - start_time - -start_time = time.perf_counter() -data_sorted = ll_list_all(data_unsorted) -end_time = time.perf_counter() # правильно ли я сделал? навряд-ли -elapsed_time_1_2 = end_time - start_time - -#2 - по поиску -start_time = time.perf_counter() -for i in range(100): - ll_find(data_unsorted, f'User_{i:05d}') -for i in range(10): - ll_find(data_unsorted, f'None_{i:05d}') -end_time = time.perf_counter() -elapsed_time_2_1 = end_time - start_time - -start_time = time.perf_counter() -for i in range(100): - ll_find(data_sorted, f'User_{i:05d}') -for i in range(10): - ll_find(data_sorted, f'None_{i:05d}') -end_time = time.perf_counter() -elapsed_time_2_2 = end_time - start_time + data_list.sort(key=lambda x: x['name']) + return data_list \ No newline at end of file