Pagini recente » Cod sursa (job #2124688) | Cod sursa (job #981831) | Cod sursa (job #1171) | Cod sursa (job #941083) | Cod sursa (job #1752147)
#include <stdio.h>
int n;
int A[500000], B[500000];
void mergesort(int *A, int *B, int l, int r){
if(r - l <= 1)
return;
int m = (l+r) >> 1;
mergesort(A, B, l, m);
mergesort(A, B, m, r);
int i, j, k;
for(i = l, j = m, k = l; j < r || i < m;)
if(j >= r || i < m && A[i] < A[j])
B[k++] = A[i++];
else
B[k++] = A[j++];
for(k = l; k < r; ++k)
A[k] = B[k];
}
int main(){
FILE *in, *out;
in = fopen("algsort.in", "r");
out = fopen("algsort.out", "w");
fscanf(in,"%d", &n);
int i;
for(i = 0; i < n; ++i)
fscanf(in,"%d", A+i);
mergesort(A, B, 0, n);
for(i = 0; i < n; ++i)
fprintf(out,"%d ", A[i]);
return 0;
}