2026-rff_mp/volkovim/task1/main.py
2026-04-30 16:20:23 +03:00

66 lines
1.7 KiB
Python

import csv
from structures.LinkedList import ll_insert, ll_find, ll_delete
from structures.HashTable import ht_insert, ht_find, ht_delete
from structures.BinaryTree import bst_insert, bst_find, bst_delete
from util.randomNames import generate_test_data
from util.timeTester import run_test
def main():
structures = [
("LinkedList", ll_insert, ll_find, ll_delete),
("HashTable", ht_insert, ht_find, ht_delete),
("BST", bst_insert, bst_find, bst_delete)
]
modes = [
("random", False),
("sorted", True)
]
results = []
N = 10000
REPEATS = 5
for mode_name, is_sorted in modes:
base_records = generate_test_data(N, is_sorted)
for struct_name, ins, fnd, dele in structures:
for i in range(REPEATS):
stats = run_test(base_records, ins, fnd, dele)
results.append([
struct_name,
mode_name,
"insert",
stats["insert"]
])
results.append([
struct_name,
mode_name,
"find",
stats["find"]
])
results.append([
struct_name,
mode_name,
"delete",
stats["delete"]
])
with open("results.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["Structure", "Order", "Operation", "Time"])
writer.writerows(results)
print("Готово: записано", len(results), "строк")
if __name__ == "__main__":
main()