исправлено двоичное дерево и исправлены опечатки
This commit is contained in:
parent
be927fd028
commit
0046bde759
|
|
@ -51,7 +51,7 @@ def run_linked_experiments(records, mode_name):
|
|||
for name in non_exist_names:
|
||||
ll_find(head, name)
|
||||
|
||||
end = time.pref_cointer()
|
||||
end = time.perf_counter()
|
||||
find_times.append(end - start)
|
||||
print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек")
|
||||
|
||||
|
|
@ -121,7 +121,7 @@ def run_hash_experiments(records, mode_name):
|
|||
for name in non_exist_names:
|
||||
ht_find(buckets, name)
|
||||
|
||||
end = time.pref_cointer()
|
||||
end = time.perf_counter()
|
||||
find_times.append(end - start)
|
||||
print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек")
|
||||
|
||||
|
|
@ -191,7 +191,7 @@ def run_bst_experiments(records, mode_name):
|
|||
for name in non_exist_names:
|
||||
bst_find(root, name)
|
||||
|
||||
end = time.pref_cointer()
|
||||
end = time.perf_counter()
|
||||
find_times.append(end - start)
|
||||
print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек")
|
||||
|
||||
|
|
@ -256,3 +256,30 @@ def save_result_to_csv(all_results):
|
|||
writer = csv.writer(f)
|
||||
writer.writerow(csv_rows)
|
||||
print(f"\nрезультаты сохранены")
|
||||
|
||||
def main():
|
||||
print("эксперименты по замеру производительности")
|
||||
|
||||
records_shuffled, records_sorted = generate_test_data(10000)
|
||||
|
||||
all_results = []
|
||||
|
||||
print("режим: случайный порядок")
|
||||
|
||||
all_results.append(run_linked_experiments(records_shuffled, "случайный"))
|
||||
all_results.append(run_hash_experiments(records_shuffled, "случайный"))
|
||||
all_results.append(run_bst_experiments(records_shuffled, "случайный"))
|
||||
|
||||
print("режим: отсортированный порядок")
|
||||
|
||||
all_results.append(run_linked_experiments(records_sorted, "отсортированный"))
|
||||
all_results.append(run_hash_experiments(records_sorted, "отсортированный"))
|
||||
all_results.append(run_bst_experiments(records_sorted, "отсортированный"))
|
||||
|
||||
save_result_to_csv(all_results)
|
||||
|
||||
if __name__== "__main__":
|
||||
main()
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -77,16 +77,31 @@ def ht_list_all(buckets):
|
|||
return records
|
||||
|
||||
def bst_insert(root, name, phone):
|
||||
|
||||
new_node = {'name': name, 'phone': phone, 'left': None, 'right': None}
|
||||
|
||||
if root is None:
|
||||
return {'name': name, 'phone': phone, 'left': None, 'right': None}
|
||||
if name < root['name']:
|
||||
root['left'] = bst_insert(root['left'], name, phone)
|
||||
elif name > root['name']:
|
||||
root['right'] = bst_insert(root['right'], name, phone)
|
||||
else:
|
||||
root['phone'] = phone
|
||||
return new_node
|
||||
|
||||
current = root
|
||||
while True:
|
||||
if name < current['name']:
|
||||
if current['left'] is None:
|
||||
current['left'] = new_node
|
||||
break
|
||||
current = current['left']
|
||||
elif name > current['name']:
|
||||
if current['right'] is None:
|
||||
current['right'] = new_node
|
||||
break
|
||||
current = current['right']
|
||||
else:
|
||||
current['phone'] = phone
|
||||
break
|
||||
|
||||
return root
|
||||
|
||||
|
||||
def bst_find(root, name):
|
||||
current = root
|
||||
while current is not None:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user