Pagini recente » Cod sursa (job #962264) | Profil Criistina | Cod sursa (job #621814) | Cod sursa (job #146687) | Cod sursa (job #2034111)
#include <stdio.h>
#include <stdlib.h>
#define nMax 500001
int n;
int v[nMax], aux[nMax];
void merge_sort(int st, int dr)
{
if(st == dr) {
return;
}
int ii, jj, mid = st + (dr-st)/2, poz = st;
merge_sort(st, mid);
merge_sort(mid+1, dr);
for(ii = st, jj = mid+1; ii<=mid && jj<=dr; ){
if(v[ii] > v[jj]) {
aux[poz++] = v[jj++];
} else {
aux[poz++] = v[ii++];
}
}
for(; ii<=mid; ) {
aux[poz++] = v[ii++];
}
for(; jj<=dr; ) {
aux[poz++] = v[jj++];
}
for(ii = st; ii<=dr; ii++) {
v[ii] = aux[ii];
}
}
int main()
{
FILE *in, *out;
in = fopen("algsort.in", "r");
out = fopen("algsort.out", "w");
int i;
fscanf(in, "%d", &n);
for(i=1; i<=n; i++) {
fscanf(in, "%d", &v[i]);
}
merge_sort(1, n);
for(i=1; i<=n; i++) {
fprintf(out, "%d ", v[i]);
}
return 0;
}