Pagini recente » Cod sursa (job #744981) | Cod sursa (job #3207006) | Cod sursa (job #352874) | Cod sursa (job #2774476) | Cod sursa (job #1542664)
#include <stdio.h>
int v[500002], aux[600002];
void interclasare(int v[], int st, int dr)
{
int i, j, k, m;
m = (st+dr)/2;
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 sortare(int v[], int st, int dr)
{
if(st == dr)
return;
int m = (st+dr)/2;
sortare(v, st, m);
sortare(v, m+1, dr);
interclasare(v, st, dr);
}
using namespace std;
int main()
{
FILE *fin, *fout;
fin = fopen("algsort.in", "r");
fout = fopen("algsort.out", "w");
int n;
fscanf(fin, "%d", &n);
for(int i = 1; i <= n; i++)
fscanf(fin, "%d", &v[i]);
sortare(v, 1, n);
for(int i = 1; i <= n; i++)
fprintf(fout, "%d ", v[i]);
return 0;
}