Pagini recente » Cod sursa (job #301596) | Cod sursa (job #1962838) | Cod sursa (job #2959153) | Cod sursa (job #848403) | Cod sursa (job #1499580)
#include <iostream>
#include <cstdio>
using namespace std;
FILE *in, *out;
const int dmax = 500000;
int v[dmax+1], r[dmax+1]; int N;
void Inter(int st, int dr)
{
int i,j,k,m;
i = k = st; m = (st+dr)/2; j = m+1;
while(i <= m && j <= dr)
if(v[i] <= v[j]) r[k++] = v[i++];
else
r[k++] = v[j++];
while(i <= m)
r[k++] = v[i++];
while(j <= dr)
r[k++] = v[j++];
//COPIEM IN v
for(i = st; i <= dr; i++)
v[i] = r[i];
}
void Merge_Sort(int st, int dr)
{
if(st == dr) return;
int m = (st+dr)/2;
Merge_Sort(st,m);
Merge_Sort(m+1,dr);
Inter(st,dr);
}
int main()
{
in = fopen("algsort.in", "r");
out = fopen("algsort.out", "w");
fscanf(in, "%d", &N);
for(int i=1; i<=N; i++)
fscanf(in, "%d", &v[i]);
Merge_Sort(1,N);
for(int i = 1; i <= N; i++)
fprintf(out, "%d ", v[i]);
return 0;
}