[1] 1-st-exercise #2

Open
volkovva wants to merge 15 commits from 1-st-exercise into develop
Showing only changes of commit df10b20f41 - Show all commits

View File

@ -0,0 +1,61 @@
import csv
import matplotlib.pyplot as plt
from collections import defaultdict
pth = r"C:\Users\vva26\2026-rff_mp\VolkovVA\docs\data\results.csv"
grf = r"C:\Users\vva26\2026-rff_mp\VolkovVA\docs\performance_chart.png"
dct = defaultdict(lambda: defaultdict(list))
with open(pth, "r", encoding="utf-8") as f:
rdr = csv.reader(f)
nxt = next(rdr)
for row in rdr:
if not row:
continue
str, mod, ope, tim = row
key = f"{str}\n({ope})"
dct[key][mod].append(float(tim))
lbl = []
rnd = []
srt = []
for key, mds in dct.items():
lbl.append(key)
avg_rnd = sum(mds["случайный"]) / len(mds["случайный"]) if mds["случайный"] else 0
avg_srt = sum(mds["отсортированный"]) / len(mds["отсортированный"]) if mds["отсортированный"] else 0
rnd.append(avg_rnd)
srt.append(avg_srt)
idx = range(len(lbl))
wth = 0.35
x_rnd = []
for i in idx:
x_rnd.append(i - wth/2)
x_srt = []
for i in idx:
x_srt.append(i + wth/2)
fig, axs = plt.subplots(figsize=(11, 6))
bar1 = axs.bar(x_rnd, rnd, wth, label='Случайные данные', color='#3498db')
bar2 = axs.bar(x_srt, srt, wth, label='Отсортированные данные', color='#e74c3c')
axs.set_title('Сравнение скорости операций в различных структурах данных', fontsize=13, fontweight='bold', pad=15)
axs.set_xticks(idx)
axs.set_xticklabels(lbl, rotation=15, ha='right', fontsize=10)
axs.legend(fontsize=10)
axs.grid(axis='y', linestyle='--', alpha=0.5)
axs.set_yscale('log')
axs.set_ylabel('Время выполнения в сек (Логарифмическая шкала)', fontsize=11)
plt.tight_layout()
plt.savefig(grf, dpi=300)
print(f"\n[OK] График сохранен в: {grf}")
plt.show()