Pagini recente » Cod sursa (job #1726666) | Cod sursa (job #1936558) | Cod sursa (job #176752) | Cod sursa (job #2275222) | Cod sursa (job #1414931)
#include <stdlib.h>
#include <stdio.h>
int *msort(int *v, int n) {
int *rez = malloc(sizeof(int) * n);
if (n == 1) {
rez[0] = *v;
return rez;
}
int p = n/2;
int *r1 = msort(v, p);
int *r2 = msort(v + p, (n - p));
int i, j, k;
for (i = 0, j = 0, k = 0; i < n; i++) {
if (((r1[j] < r2[k]) || k >= (n - p))&& (j < p)) {
rez[i] = r1[j];
j++;
}
else {
rez[i] = r2[k];
k++;
}
}
return rez;
}
int main() {
int n, i;
FILE *f = fopen("algsort.in", "r");
FILE *g = fopen("algsort.out", "w");
fscanf(f, "%d", &n);
int *v = malloc(sizeof(int) * n);
for (i = 0; i < n; i++)
fscanf(f, "%d", &v[i]);
v = msort(v, n);
for (i = 0; i < n; i++)
fprintf(g, "%d ", v[i]);
return 0;
}