Skip to content
This repository was archived by the owner on Dec 17, 2023. It is now read-only.

Commit da90ce3

Browse files
committed
version 1.1
1 parent 39dcd4d commit da90ce3

File tree

9 files changed

+4117
-521
lines changed

9 files changed

+4117
-521
lines changed

experiments/main.py

+121-125
Original file line numberDiff line numberDiff line change
@@ -1,159 +1,155 @@
11
import time
22
import matplotlib.pyplot as plt
3+
from multiprocessing import Process
34

45

56
import algorithms.merge_algorithm as merge_sorts
67
import algorithms.tree_algorithm as tree_sort
7-
import get_data.generate_data as generate
8+
from get_data.generate_data import GenerateData
89

910

1011
class ExperimentMerge:
11-
def __init__(self, array: list):
12-
self.array = array
12+
def __init__(self, start_count: int, end_count: int, step: int):
13+
self.array = []
14+
self.start_count = start_count
15+
self.end_count = end_count
16+
self.step = step
1317

1418

1519
def experiment2(self):
20+
wfile = open("output/time/merge2.txt", "w")
21+
wfile.write("")
1622
merge2_sorter = merge_sorts.KMergeSort(2)
17-
merge2_start = time.time()
18-
merge2_sorter.k_merge_sort(self.array)
19-
merge2_end = time.time()
20-
return merge2_end - merge2_start
23+
wfile = open("output/time/merge2.txt", "a")
24+
25+
for i in range(self.start_count, self.end_count, self.step):
26+
self.array = GenerateData(i).generate()
27+
merge2_start = time.time()
28+
merge2_sorter.k_merge_sort(self.array)
29+
merge2_end = time.time()
30+
wfile.write(f"{merge2_end - merge2_start}\n")
31+
print(f"Merge 2: {i}")
32+
wfile.close()
33+
34+
with open("output/time/merge2.txt", "r") as wfile:
35+
data = wfile.readlines()
36+
data = [float(n) for n in data]
37+
plt.plot(data)
38+
plt.title("Merge sort 2")
39+
plt.xlabel(f"Start count: {self.start_count} End count: {self.end_count} Step: {self.step}")
40+
plt.ylabel("Time")
41+
plt.savefig("output/graphics/merge2.png")
42+
plt.clf()
43+
data.clear()
2144

2245

2346
def experiment4(self):
47+
wfile = open("output/time/merge4.txt", "w")
48+
wfile.write("")
2449
merge4_sorter = merge_sorts.KMergeSort(4)
25-
merge4_start = time.time()
26-
merge4_sorter.k_merge_sort(self.array)
27-
merge4_end = time.time()
28-
return merge4_end - merge4_start
50+
wfile = open("output/time/merge4.txt", "a")
51+
52+
for i in range(self.start_count, self.end_count, self.step):
53+
self.array = GenerateData(i).generate()
54+
merge4_start = time.time()
55+
merge4_sorter.k_merge_sort(self.array)
56+
merge4_end = time.time()
57+
wfile.write(f"{merge4_end - merge4_start}\n")
58+
print(f"Merge 4: {i}")
59+
wfile.close()
60+
61+
with open("output/time/merge4.txt", "r") as wfile:
62+
data = wfile.readlines()
63+
data = [float(n) for n in data]
64+
plt.plot(data)
65+
plt.title("Merge sort 4")
66+
plt.xlabel(f"Start count: {self.start_count} End count: {self.end_count} Step: {self.step}")
67+
plt.ylabel("Time")
68+
plt.savefig("output/graphics/merge4.png")
69+
plt.clf()
70+
data.clear()
2971

3072

3173
def experiment8(self):
74+
wfile = open("output/time/merge8.txt", "w")
75+
wfile.write("")
3276
merge8_sorter = merge_sorts.KMergeSort(8)
33-
merge8_start = time.time()
34-
merge8_sorter.k_merge_sort(self.array)
35-
merge8_end = time.time()
36-
return merge8_end - merge8_start
77+
wfile = open("output/time/merge8.txt", "a")
78+
79+
for i in range(self.start_count, self.end_count, self.step):
80+
self.array = GenerateData(i).generate()
81+
merge8_start = time.time()
82+
merge8_sorter.k_merge_sort(self.array)
83+
merge8_end = time.time()
84+
wfile.write(f"{merge8_end - merge8_start}\n")
85+
print(f"Merge 8: {i}")
86+
wfile.close()
87+
88+
with open("output/time/merge8.txt", "r") as wfile:
89+
data = wfile.readlines()
90+
data = [float(n) for n in data]
91+
plt.plot(data)
92+
plt.title("Merge sort 8")
93+
plt.xlabel(f"Start count: {self.start_count} End count: {self.end_count} Step: {self.step}")
94+
plt.ylabel("Time")
95+
plt.savefig("output/graphics/merge8.png")
96+
plt.clf()
97+
data.clear()
3798

3899

39100
class ExperimentTree:
40-
def __init__(self, array: list):
41-
self.array = array
101+
def __init__(self, start_count: int, end_count: int, step: int):
102+
self.array = []
103+
self.start_count = start_count
104+
self.end_count = end_count
105+
self.step = step
42106

43107

44108
def experiment(self):
45-
sarray = [n for n in self.array]
46-
avl_start = time.time()
47-
tree_sort.tree_sort(sarray)
48-
avl_end = time.time()
49-
return avl_end - avl_start
109+
wfile = open("output/time/tree.txt", "w")
110+
wfile.write("")
111+
wfile = open("output/time/tree.txt", "a")
112+
113+
for i in range(self.start_count, self.end_count, self.step):
114+
self.array = GenerateData(i).generate()
115+
tree_start = time.time()
116+
tree_sort.tree_sort(self.array)
117+
tree_end = time.time()
118+
wfile.write(f"{tree_end - tree_start}\n")
119+
print(f"Tree: {i}")
120+
wfile.close()
121+
122+
with open("output/time/tree.txt", "r") as wfile:
123+
data = wfile.readlines()
124+
data = [float(n) for n in data]
125+
plt.plot(data)
126+
plt.title("Tree sort")
127+
plt.xlabel(f"Start count: {self.start_count} End count: {self.end_count} Step: {self.step}")
128+
plt.ylabel("Time")
129+
plt.savefig("output/graphics/tree.png")
130+
plt.clf()
131+
data.clear()
50132

51133

52134
if __name__ == "__main__":
53-
try:
54-
with open("output/time/merge2.txt", "r") as merge2_file:
55-
merge2_file.close()
56-
with open("output/time/merge2.txt", "w") as merge2_file:
57-
merge2_file.write("")
58-
except FileNotFoundError:
59-
with open("output/time/merge2.txt", "w") as merge2_file:
60-
merge2_file.write("")
61-
62-
try:
63-
with open("output/time/merge4.txt", "r") as merge4_file:
64-
merge4_file.close()
65-
with open("output/time/merge4.txt", "w") as merge4_file:
66-
merge4_file.write("")
67-
except FileNotFoundError:
68-
with open("output/time/merge4.txt", "w") as merge4_file:
69-
merge4_file.write("")
70-
try:
71-
with open("output/time/merge8.txt", "r") as merge8_file:
72-
merge8_file.close()
73-
with open("output/time/merge8.txt", "w") as merge8_file:
74-
merge8_file.write("")
75-
except FileNotFoundError:
76-
with open("output/time/merge8.txt", "w") as merge8_file:
77-
merge8_file.write("")
78-
try:
79-
with open("output/time/tree.txt", "r") as tree_file:
80-
tree_file.close()
81-
with open("output/time/tree.txt", "w") as tree_file:
82-
tree_file.write("")
83-
except FileNotFoundError:
84-
with open("output/time/tree.txt", "w") as tree_file:
85-
tree_file.write("")
86-
87-
merge2 = open("output/time/merge2.txt", "a")
88-
merge4 = open("output/time/merge4.txt", "a")
89-
merge8 = open("output/time/merge8.txt", "a")
90-
tree = open("output/time/tree.txt", "a")
91-
92135
start_count = 0
93-
end_count = 100_000
136+
end_count = 1_000_000
94137
step = 1_000
95138

96-
for i in range(start_count, end_count, step):
97-
array = generate.GenerateData(i).generate()
98-
e_merge = ExperimentMerge(array)
99-
e_tree = ExperimentTree(array)
100-
101-
merge2.write(f"{e_merge.experiment2()}\n")
102-
merge4.write(f"{e_merge.experiment4()}\n")
103-
merge8.write(f"{e_merge.experiment8()}\n")
104-
tree.write(f"{e_tree.experiment()}\n")
105-
106-
print(f"Experiment {i} finished")
107-
108-
merge2.close()
109-
merge4.close()
110-
merge8.close()
111-
tree.close()
112-
113-
# merge2
114-
with open("output/time/merge2.txt", "r") as merge2_file:
115-
merge2_data = merge2_file.readlines()
116-
merge2_data = [float(n) for n in merge2_data]
117-
plt.plot(merge2_data)
118-
plt.title("Merge sort 2")
119-
plt.xlabel(f"Start count: {start_count} End count: {end_count} Step: {step}")
120-
plt.ylabel("Time")
121-
plt.savefig("output/graphics/merge2.png")
122-
plt.clf()
123-
merge2_data.clear()
139+
e_merge = ExperimentMerge(start_count, end_count, step)
140+
e_tree = ExperimentTree(start_count, end_count, step)
141+
142+
p1 = Process(target=e_merge.experiment2, daemon=True)
143+
p2 = Process(target=e_merge.experiment4, daemon=True)
144+
p3 = Process(target=e_merge.experiment8, daemon=True)
145+
p4 = Process(target=e_tree.experiment, daemon=True)
146+
147+
p1.start()
148+
p2.start()
149+
p3.start()
150+
p4.start()
124151

125-
# merge4
126-
with open("output/time/merge4.txt", "r") as merge4_file:
127-
merge4_data = merge4_file.readlines()
128-
merge4_data = [float(n) for n in merge4_data]
129-
plt.plot(merge4_data)
130-
plt.title("Merge sort 4")
131-
plt.xlabel(f"Start count: {start_count} End count: {end_count} Step: {step}")
132-
plt.ylabel("Time")
133-
plt.savefig("output/graphics/merge4.png")
134-
plt.clf()
135-
merge4_data.clear()
136-
137-
# merge8
138-
with open("output/time/merge8.txt", "r") as merge8_file:
139-
merge8_data = merge8_file.readlines()
140-
merge8_data = [float(n) for n in merge8_data]
141-
plt.plot(merge8_data)
142-
plt.title("Merge sort 8")
143-
plt.xlabel(f"Start count: {start_count} End count: {end_count} Step: {step}")
144-
plt.ylabel("Time")
145-
plt.savefig("output/graphics/merge8.png")
146-
plt.clf()
147-
merge8_data.clear()
148-
149-
# tree
150-
with open("output/time/tree.txt", "r") as tree_file:
151-
tree_data = tree_file.readlines()
152-
tree_data = [float(n) for n in tree_data]
153-
plt.plot(tree_data)
154-
plt.title("Tree sort")
155-
plt.xlabel(f"Start count: {start_count} End count: {end_count} Step: {step}")
156-
plt.ylabel("Time")
157-
plt.savefig("output/graphics/tree.png")
158-
plt.clf()
159-
tree_data.clear()
152+
p1.join()
153+
p2.join()
154+
p3.join()
155+
p4.join()
-6.57 KB
Loading
-7.57 KB
Loading
-7.01 KB
Loading

experiments/output/graphics/tree.png

-4.48 KB
Loading

0 commit comments

Comments
 (0)