66 lines
1.7 KiB
Python
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() |