From 809294edaebc6fce83b1551eab67ccea6d320957 Mon Sep 17 00:00:00 2001 From: Dima Date: Sun, 10 May 2026 20:51:53 +0300 Subject: [PATCH] =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D1=85=D0=B5=D1=88-=D1=84=D1=83=D0=BD?= =?UTF-8?q?=D0=BA=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nikolaevda/task1/Zadanie1.py | 70 +++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/nikolaevda/task1/Zadanie1.py b/nikolaevda/task1/Zadanie1.py index f68a5a5..cfa955b 100644 --- a/nikolaevda/task1/Zadanie1.py +++ b/nikolaevda/task1/Zadanie1.py @@ -92,4 +92,72 @@ def ll_list_all(head): if result[j][0] > result[j + 1][0]: result[j], result[j + 1] = result[j + 1], result[j] - return result \ No newline at end of file + return result + + +def hash_table(size): + """создание хеш-таблицы""" + return [None] * size + + +def hash_func(name, buckets_count): + """ + использует умножение на простое число для лучшего распределения + """ + h = 0 + multiplier = 1 + for char in name: + h = (h + ord(char) * multiplier) % buckets_count + multiplier = (multiplier * 31) % buckets_count + return h + + +def ht_insert(buckets, name, phone): + """добавить или обновить запись""" + if buckets is None: + return + + index = hash_func(name, len(buckets)) + buckets[index] = ll_insert(buckets[index], name, phone) + + +def ht_find(buckets, name): + """найти телефон по имени""" + idx = hash_func(name, len(buckets)) + return ll_find(buckets[idx], name) + + +def ht_delete(buckets, name): + """ + удалить запись + """ + idx = hash_func(name, len(buckets)) + buckets[idx] = ll_delete(buckets[idx], name) + + +def bubble_sort(records): + """пузырьковая сортировка""" + n = len(records) + for i in range(n - 1): + swapped = False + for j in range(n - 1 - i): + if records[j][0] > records[j + 1][0]: + records[j], records[j + 1] = records[j + 1], records[j] + swapped = True + if not swapped: + break + return records + + +def ht_list_all(buckets): + """ + собрание всех записей и сортировка + """ + # Собираем все записи + full_data = [] + for head in buckets: + ll_collect(head, full_data) + + # Сортируем пузырьком + bubble_sort(full_data) + return full_data