Pagini recente » Cod sursa (job #567024) | Cod sursa (job #2821944) | Cod sursa (job #1343818) | Cod sursa (job #837572) | Cod sursa (job #631540)
Cod sursa(job #631540)
#include<stdio.h>
#define nmax 50000
unsigned int n;
unsigned int a[nmax];
void citire()
{
freopen("algsort.in","r",stdin);
scanf("%u",&n);
for(unsigned int i=0;i<n;i++)
scanf("%u",&a[i]);
fclose(stdin);
}
void afisare()
{
freopen("algsort.out","w",stdout);
for(unsigned int i=0;i<n;i++)
printf("%u ",a[i]);
printf("\n");
fclose(stdout);
}
void interclasare(unsigned int st,unsigned int mijl,unsigned int dr)
{
unsigned int b[nmax],i,j,nr;
for(i=st,nr=0,j=mijl+1;i<=mijl && j<=dr;nr++)
if(a[i]<a[j])
{
b[nr]=a[i];
i++;
}
else
{
b[nr]=a[j];
j++;
}
while(i<=mijl)
{
b[nr]=a[i];
nr++;i++;
}
while(j<=dr)
{
b[nr]=a[j];
nr++;j++;
}
for(i=st;i<=dr;i++)
a[i]=b[i-st];
}
void sortare_interclasare(unsigned int st,unsigned int dr)
{
if(st<dr)
{
unsigned int mijl=(st+dr)/2;
sortare_interclasare(st,mijl);
sortare_interclasare(mijl+1,dr);
interclasare(st,mijl,dr);
}
}
int main()
{
citire();
if(n>0)
sortare_interclasare(0,n-1);
afisare();
return 0;
}