Pagini recente » Cod sursa (job #3180881) | Cod sursa (job #324547) | Cod sursa (job #32602) | Cod sursa (job #2764105) | Cod sursa (job #1745304)
#include<cstdio>
#define NMax 500000
using namespace std;
unsigned a[NMax], n;
void Citire()
{
FILE *fin = fopen("algsort.in","r");
fscanf(fin,"%u",&n);
for(unsigned i=0; i<n; i++)
fscanf(fin,"%u",&a[i]);
fclose(fin);
}
void Merge(unsigned p, unsigned m, unsigned q)
{
unsigned i = p, j = m+1, k = 0;
unsigned b[NMax];
while(i <= m && j <= q)
if(a[i] < a[j]) b[k++] = a[i++];
else b[k++] = a[j++];
while(i <= m) b[k++] = a[i++];
while(j <= q) b[k++] = a[j++];
for(i=p; i<=q; i++)
a[i] = b[i-p];
}
void Merge_Sort(unsigned p, unsigned q)
{
if(q > p)
{
unsigned m = (p+q)/2;
Merge_Sort(p, m);
Merge_Sort(m+1, q);
Merge(p, m, q);
}
}
int main()
{
FILE *fout = fopen("algsort.out","w");
Citire();
Merge_Sort(0, n-1);
for(unsigned i=0; i<n; i++)
fprintf(fout, "%u ",a[i]);
fclose(fout);
return 0;
}