7
Результат роботи сортування вставками
Довжина послідовності
Випадкові
Зростає
Спадає
312
17
927
85
10009
середнє
Час
0
10
Пересилан-ня
38
37
41
35
37,2
18
63
Порівняння
29
28
32
26
28,2
9
54
50
816
647
691
679
668
700,2
98
1323
767
598
642
630
619
651,2
49
1274
200
10003
11251
9802
10387
10455
10379,6
398
20298
9804
11052
9603
10188
10256
10180,6
199
20099
1000
255877
250330
249604
249928
252295
251606,8
1998
501498
254879
249331
248605
248929
251296
250608
999
500499
0,054
0,055
0,55
0,1
5000
6302053
6183921
6229604
6391053
6282323
6277791
9998
12507498
6297054
6178922
6224605
6386054
6277324
6272792
4999
12502499
0,21
0,22
0,44
10000
25166644
24940616
24897941
24822544
24963312
24958211
19998
50014998
25156645
24930617
24887942
24812545
24953313
24948212
9999
50004999
Час виконання:
Кількість порівняннь:
Кількість пересилань:
#include <stdio. h>
#include <conio. h>
#include <stdlib. h>
#include <time. h>
// Merge-----------------------------------------------------------------
void merge (int *a, int l, int m, int r)
{
int h, i,j,b [10000],k;
h=l;
i=l;
j=m+1;
while ( (h<=m) && (j<=r))
if (a [h] <=a [j])
b [i] =a [h];
h++;
}
else
b [i] =a [j];
j++;
i++;
if (h>m)
for (k=j; k<=r; k++)
b [i] =a [k];
for (k=h; k<=m; k++)
for (k=l; k<=r; k++) {a [k] =b [k]; }
void MergeSort (int *a, int l, int r)
int m;
if (l<r)
m= (l+r) /2;
MergeSort (a,l,m);
MergeSort (a,m+1,r);
merge (a,l,m,r);
// ----------------------------------------------------------------------
void main ()
FILE *f,*rez;
int *X, N;
clock_t start, end;
clrscr ();
f=fopen ("massiv. txt","rt");
N=0;
while (! feof (f))
fscanf (f,"%d",X+N);
N++;
fclose (f);
start= clock ();
MergeSort (X,0,N-1);
end= clock ();
printf ("The time was:%f s\n", (end - start) / CLK_TCK);
rez=fopen ("rezult. txt","wt");
for (int i=0; i<N; i++)
fprintf (rez,"%d\n",* (X+i));
fclose (rez);
getch ();
}Результат роботи сортування злиттям
Страницы: 1, 2