-
Notifications
You must be signed in to change notification settings - Fork 0
/
measurement.c
249 lines (221 loc) · 8.17 KB
/
measurement.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
#include "Measurement.h"
clock_t Result[measurements_number];
void Processing_Insert_Sort(int mod1)
/* ôóíêö³ÿ äëÿ âèêëèêó ôóíêö³é âèì³ðþâàííÿ ÷àñó ðîáîòè àëãîðèòìó
ïðÿìî¿ âñòàâêè ³ç ë³í³éíèì ïîøóêîì ì³ñöÿ âñòàâêè, ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ òðüîõâèì³ðíîãî ìàñèâa À */
{
Measure_Insert_Sort(mod1);
MeasurementProcessing();
}
void Measure_Insert_Sort(int mod1)
/*ôóíêö³ÿ âèì³ðó ÷àñó ðîáîòè àëãîðèòìó ñîðòóâàííÿ ¹2 ìåòîäó ïðÿìî¿
âñòàâêè (ç ë³í³éíèì ïîøóêîì ì³ñöÿ âñòàâêè), ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ òðüîõâèì³ðíîãî ìàñèâa À.*/
{
int i;
for (i = 0; i < measurements_number; i++) {
input(mod1); // çàïîâíåííÿ òðüîõâèì³ðíîãî ìàñèâà À â³äïîâ³äíèì ðåæèìîì
Result[i] = insert_sort();
}
}
void Processing_Select_Sort(int mod1)
/* ôóíêö³ÿ äëÿ âèêëèêó ôóíêö³é âèì³ðþâàííÿ ÷àñó ðîáîòè àëãîðèòìó
ñîðòóâàííÿ ìåòîäîì ïðÿìîãî âèáîðó, ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ òðüîõâèì³ðíîãî ìàñèâa À */
{
Measure_Select_Sort(mod1);
MeasurementProcessing();
}
void Measure_Select_Sort(int mod1)
/*ôóíêö³ÿ âèì³ðó ÷àñó ðîáîòè àëãîðèòìó ñîðòóâàííÿ ¹8 ìåòîäó ïðÿìîãî âèáîðó,
ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ òðüîõâèì³ðíîãî ìàñèâa À.*/
{
int i;
for (i = 0; i < measurements_number; i++) {
input(mod1); // çàïîâíåííÿ òðüîõâèì³ðíîãî ìàñèâà À â³äïîâ³äíèì ðåæèìîì
Result[i] = select_sort();
}
}
void Processing_Exchange_Sort(int mod1)
/* ôóíêö³ÿ äëÿ âèêëèêó ôóíêö³é âèì³ðþâàííÿ ÷àñó ðîáîòè àëãîðèòìó
ñîðòóâàííÿ ìåòîäîì ïðÿìîãî îáì³íó ¹3, ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ òðüîõâèì³ðíîãî ìàñèâa À */
{
Measure_Exchange_Sort(mod1);
MeasurementProcessing();
}
void Measure_Exchange_Sort(int mod1)
/*ôóíêö³ÿ âèì³ðó ÷àñó ðîáîòè àëãîðèòìó ñîðòóâàííÿ ¹3 ìåòîäó ïðÿìîãî îáì³íó,
ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ òðüîõâèì³ðíîãî ìàñèâa À.*/
{
int i;
for (i = 0; i < measurements_number; i++) {
input(mod1); // çàïîâíåííÿ ìàñèâà òðüîõâèì³ðíîãî À â³äïîâ³äíèì ðåæèìîì
Result[i] = exchange_sort();
}
}
void Processing_Quick_Sort(int mod1)
/* ôóíêö³ÿ äëÿ âèêëèêó ôóíêö³é âèì³ðþâàííÿ ÷àñó ðîáîòè àëãîðèòìó
Ñîðòóâàííÿ Õîàðà, ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ òðüîõâèì³ðíîãî ìàñèâa À*/
{
Measure_Quick_Sort(mod1);
MeasurementProcessing();
}
void Measure_Quick_Sort(int mod1)
/*ôóíêö³ÿ âèì³ðó ÷àñó ðîáîòè àëãîðèòìó ñîðòóâàííÿ Õîàðà, øëÿõîì äîäàâàííÿ âèì³ð³â ÷àñó ñîðòóâàííÿ êîæíî¿ ç ä³àãîíàëåé,
ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ òðüîõâèì³ðíîãî ìàñèâa À.*/
{
int i;
for (i = 0; i < measurements_number; i++) {
input(mod1); // çàïîâíåííÿ ìàñèâà òðüîõâèì³ðíîãî À â³äïîâ³äíèì ðåæèìîì
Result[i] = quick_sort1()+quick_sort2();
}
}
void Processing_Vector_Insert_Sort(int mod2)
/* ôóíêö³ÿ äëÿ âèêëèêó ôóíêö³é âèì³ðþâàííÿ ÷àñó ðîáîòè àëãîðèòìó
ïðÿìî¿ âñòàâêè ç ë³í³éíèì ïîøóêîì ì³ñöÿ âñòàâêè, ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ îäíîâèì³ðíîãî ìàñèâa vectA */
{
Measure_Vector_Insert_Sort(mod2);
MeasurementProcessing();
}
void Measure_Vector_Insert_Sort(int mod2)
/*ôóíêö³ÿ âèì³ðó ÷àñó ðîáîòè àëãîðèòìó ñîðòóâàííÿ ¹2 ìåòîäó ïðÿìî¿
âñòàâêè (ç ë³í³éíèì ïîøóêîì ì³ñöÿ âñòàâêè), ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ îäíîâèì³ðíîãî ìàñèâa vectA*/
{
int i;
for (i = 0; i < measurements_number; i++) {
vector_input(mod2); // çàïîâíåííÿ îäíîâèì³ðíîãî ìàñèâa vectA â³äïîâ³äíèì ðåæèìîì
Result[i] = vector_insert_sort();
}
}
void Processing_Vector_Select_Sort(int mod2)
/* ôóíêö³ÿ äëÿ âèêëèêó ôóíêö³é âèì³ðþâàííÿ ÷àñó ðîáîòè àëãîðèòìó
ñîðòóâàííÿ ìåòîäîì ïðÿìîãî âèáîðó, ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ îäíîâèì³ðíîãî ìàñèâa vectA */
{
Measure_Vector_Select_Sort(mod2);
MeasurementProcessing();
}
void Measure_Vector_Select_Sort(int mod2)
/*ôóíêö³ÿ âèì³ðó ÷àñó ðîáîòè àëãîðèòìó ñîðòóâàííÿ ¹8 ìåòîäó ïðÿìîãî âèáîðó,
ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ îäíîâèì³ðíîãî ìàñèâa vectA*/
{
int i;
for (i = 0; i < measurements_number; i++) {
vector_input(mod2); // çàïîâíåííÿ îäíîâèì³ðíîãî ìàñèâa vectA â³äïîâ³äíèì ðåæèìîì
Result[i] = vector_select_sort();
}
}
void Processing_Vector_Exchange_Sort(int mod2)
/* ôóíêö³ÿ äëÿ âèêëèêó ôóíêö³é âèì³ðþâàííÿ ÷àñó ðîáîòè àëãîðèòìó
ñîðòóâàííÿ ìåòîäîì ïðÿìîãî îáì³íó, ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ îäíîâèì³ðíîãî ìàñèâa vectA */
{
Measure_Vector_Exchange_Sort(mod2);
MeasurementProcessing();
}
void Measure_Vector_Exchange_Sort(int mod2)
/*ôóíêö³ÿ âèì³ðó ÷àñó ðîáîòè àëãîðèòìó ñîðòóâàííÿ ¹3 ìåòîäó ïðÿìîãî îáì³íó,
ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ îäíîâèì³ðíîãî ìàñèâa vectA*/
{
int i;
for (i = 0; i < measurements_number; i++) {
vector_input(mod2); // çàïîâíåííÿ îäíîâèì³ðíîãî ìàñèâa vectA â³äïîâ³äíèì ðåæèìîì
Result[i] = vector_exchange_sort();
}
}
void Processing_Vector_Quick_Sort(int mod2)
/* ôóíêö³ÿ äëÿ âèêëèêó ôóíêö³é âèì³ðþâàííÿ ÷àñó ðîáîòè àëãîðèòìó
ñîðòóâàííÿ Õîàðà, ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ îäíîâèì³ðíîãî ìàñèâa vectA*/
{
Measure_Vector_Quick_Sort(mod2);
MeasurementProcessing();
}
void Measure_Vector_Quick_Sort(int mod2)
/*ôóíêö³ÿ âèì³ðó ÷àñó ðîáîòè àëãîðèòìó ñîðòóâàííÿ Õîàðà,
ÿêà â ÿêîñò³ ïàðàìåòð³â ïðèéìຠðåæèì çàïîâíåííÿ îäíîâèì³ðíîãî ìàñèâa vectA*/
{
int i;
for (i = 0; i < measurements_number; i++) {
vector_input(mod2); // çàïîâíåííÿ îäíîâèì³ðíîãî ìàñèâa vectA â³äïîâ³äíèì ðåæèìîì
Result[i] = vector_quick_sort();
}
}
///////////////////////////////////////////////////////
void MeasurementProcessing() /* ôóíêö³ÿ äëÿ îáðàõóâàííÿ òî÷íîãî ÷àñó ðîáîòè êîíêðåòíîãî àëãîðèòìó
øëÿõîì â³äêèäàííÿ òðüîõ ì³í³ìàëüíèõ òà òðüîõ ìàêñèìàëüíèõ åëåìåíò³â ç ìàñèâà ÷àñó Result */
{
long int Sum, Min1, Min2, Min3, Max1, Max2, Max3;
int imin1, imin2, imin3, imax1, imax2, imax3;
int i;
// Äâà ïåðøèõ âèì³ðè (0-é òà 1-é) â³äêèäàþòüñÿ
// Ñåðåä ³íøèõ åëåìåíò³â çíàõîäèìî òðè ì³í³ìàëüíèõ òà òðè ìàêñèìàëüíèõ
// åëåìåíòè ³ â³äí³ìàºìî ¿õ çíà÷åííÿ â³ä çàãàëüíî¿ ñóìè
// Çíàõîäèìî ì³í³ìàëüíèé òà ìàêñèìàëüíèé åëåìåíòè ³ âèêëþ÷àºìî ¿õ ç íàñòóïíèõ
// ïîøóê³â, âñòàíîâèâøè ¿ì çíà÷åííÿ -1
Sum = Result[2];
Min1 = Result[2];
Max1 = Result[2];
imin1 = 2;
imax1 = 2;
for (i = 3; i < measurements_number; i++) {
Sum = Sum + Result[i];
if (Result[i] > Max1) {
Max1 = Result[i];
imax1 = i;
}
else if (Result[i] < Min1) {
Min1 = Result[i];
imin1 = i;
}
}
Result[imin1] = -1;
Result[imax1] = -1;
// Çíàõîäèìî äðóãèé ì³í³ìàëüíèé òà äðóãèé ìàêñèìàëüíèé åëåìåíòè
// ³ âèêëþ÷àºìî ¿õ ç íàñòóïíèõ ïîøóê³â, âñòàíîâèâøè ¿ì çíà÷åííÿ -1
if (Result[2] == -1) {
Min2 = Result[3];
imin2 = 3;
}
else {
Min2 = Result[2];
imin2 = 2;
}
Max2 = Result[2];
imax2 = 2;
for (i = 3; i < measurements_number; i++) {
if (Result[i] > Max2) {
Max2 = Result[i];
imax2 = i;
}
else if (Result[i] < Min2 && Result[i] != -1) {
Min2 = Result[i];
imin2 = i;
}
}
Result[imin2] = -1;
Result[imax2] = -1;
// Çíàõîäèìî òðåò³é ì³í³ìàëüíèé òà òðåò³é ìàêñèìàëüíèé åëåìåíòè
if (Result[2] == -1)
if (Result[3] == -1) {
Min3 = Result[4];
imin3 = 4;
}
else {
Min3 = Result[3];
imin3 = 3;
}
else {
Min3 = Result[2];
imin3 = 2;
}
Max3 = Result[2];
imax3 = 2;
for (i = 3; i < measurements_number; i++) {
if (Result[i] > Max3) {
Max3 = Result[i];
imax3 = i;
}
else if (Result[i] < Min3 && Result[i] != -1) {
Min3 = Result[i];
imin3 = i;
}
}
// Ñóìà âñ³õ âèì³ð³â ì³íóñ òðè ìàêñèìàëüíèõ òà òðè ì³í³ìàëüíèõ çíà÷åííÿ áóäå çàïèñàíà äî 0-ãî åëåìåíòà ìàñèâà Result
Result[0] = Sum - Min1 - Min2 - Min3 - Max1 - Max2 - Max3;
}