Pagini recente » Cod sursa (job #279962) | Cod sursa (job #82980) | Cod sursa (job #1867893) | Cod sursa (job #2868660) | Cod sursa (job #1523249)
#include <stdio.h>
int v[500000], aux[500000];
FILE *fin, *fout;
void merge(int v[], int st, int dr)
{
int m = (st+dr) / 2, i, j, k;
i = k = st;
j = m + 1;
while(i <= m && j <= dr){
if(v[i] < v[j]) aux[k++] = v[i++];
else aux[k++] = v[j++];
}
while(i <= m) aux[k++] = v[i++];
while(j <= dr) aux[k++] = v[j++];
for(k = st ; k <= dr ; k++) v[k] = aux[k];
}
void sort(int v[], int st, int dr)
{
if(st == dr) return;
int m = (st + dr) / 2;
sort(v, st, m);
sort(v, m + 1, dr);
merge(v, st, dr);
}
int main()
{
int n, i;
fin = fopen("algsort.in", "r");
fout = fopen("algsort.out", "w");
fscanf(fin, "%d", &n);
for(i = 0 ; i < n ; i++){
fscanf(fin, "%d", &v[i]);
}
sort(v, 0, n - 1);
for(i = 0 ; i < n ; i++){
fprintf(fout, "%d ", v[i]);
}
fclose(fin);
fclose(fout);
return 0;
}