forked from UNN/2026-rff_mp
mes func
созданы измерительные функции для каждого типа данных
This commit is contained in:
parent
a740a6cb6b
commit
859ee847dd
|
|
@ -158,9 +158,63 @@ def bst_list_all(root):
|
||||||
inorder(root, result)
|
inorder(root, result)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def generate_test_data(n=10000):
|
def generate_test_data(n=10000):
|
||||||
records = [(f"User_{i:05d}", f"+7-999-{i:05d}") for i in range(n)]
|
records = [(f"User_{i:05d}", f"+7-999-{i:05d}") for i in range(n)]
|
||||||
records_sorted = records[:]
|
records_sorted = records[:]
|
||||||
records_shuffled = records[:]
|
records_shuffled = records[:]
|
||||||
random.shuffle(records_shuffled)
|
random.shuffle(records_shuffled)
|
||||||
return records_sorted, records_shuffled
|
return records_sorted, records_shuffled
|
||||||
|
|
||||||
|
def measure_insert(struct_name, records):
|
||||||
|
start = time.perf_counter()
|
||||||
|
if struct_name == "LinkedList":
|
||||||
|
head = None
|
||||||
|
for name, phone in records:
|
||||||
|
head = ll_insert(head, name, phone)
|
||||||
|
obj = head
|
||||||
|
elif struct_name == "HashTable":
|
||||||
|
buckets = ht_create(bucket_count=2000)
|
||||||
|
for name, phone in records:
|
||||||
|
ht_insert(buckets, name, phone)
|
||||||
|
obj = buckets
|
||||||
|
elif struct_name == "BST":
|
||||||
|
root = None
|
||||||
|
for name, phone in records:
|
||||||
|
root = bst_insert(root, name, phone)
|
||||||
|
obj = root
|
||||||
|
else:
|
||||||
|
raise ValueError(f"Unknown structure: {struct_name}")
|
||||||
|
elapsed = time.perf_counter() - start
|
||||||
|
return elapsed, obj
|
||||||
|
|
||||||
|
def measure_find(obj, struct_name, existing_names, nonexisting_names):
|
||||||
|
start = time.perf_counter()
|
||||||
|
for name in existing_names:
|
||||||
|
if struct_name == "LinkedList":
|
||||||
|
ll_find(obj, name)
|
||||||
|
elif struct_name == "HashTable":
|
||||||
|
ht_find(obj, name)
|
||||||
|
else:
|
||||||
|
bst_find(obj, name)
|
||||||
|
for name in nonexisting_names:
|
||||||
|
if struct_name == "LinkedList":
|
||||||
|
ll_find(obj, name)
|
||||||
|
elif struct_name == "HashTable":
|
||||||
|
ht_find(obj, name)
|
||||||
|
else:
|
||||||
|
bst_find(obj, name)
|
||||||
|
return time.perf_counter() - start
|
||||||
|
|
||||||
|
def measure_delete(obj, struct_name, names_to_delete):
|
||||||
|
start = time.perf_counter()
|
||||||
|
if struct_name == "LinkedList":
|
||||||
|
for name in names_to_delete:
|
||||||
|
obj = ll_delete(obj, name)
|
||||||
|
elif struct_name == "HashTable":
|
||||||
|
for name in names_to_delete:
|
||||||
|
ht_delete(obj, name)
|
||||||
|
else:
|
||||||
|
for name in names_to_delete:
|
||||||
|
obj = bst_delete(obj, name)
|
||||||
|
elapsed = time.perf_counter() - start
|
||||||
|
return elapsed, obj
|
||||||
Loading…
Reference in New Issue
Block a user