Pagini recente » Cod sursa (job #3352353) | Cod sursa (job #3352304) | Cod sursa (job #406859) | Cod sursa (job #1840698) | Cod sursa (job #854337)
Cod sursa(job #854337)
#include<iostream>
#include<fstream>
#define N 500000
using namespace std;
int n , a[N];
void interclasare(int s, int d)
{
int m,x,y,k,c[N];
m = (s+d) / 2;
x = s;
y = m+1;
k = 0;
while(x<=m && y<=d)
{
if(a[x] > a[y])
c[++k] = a[y++];
else
c[++k] = a[x++];
}
while(x<=m)
c[++k]=a[x++];
while(y<=d)
c[++k]=a[y++];
k = 1;
for(x=s;x<=d;x++)
a[x]=c[k++];
}
void mergeSort(int stanga, int dreapta)
{
if( stanga < dreapta)
{
int mijloc = (stanga+dreapta) / 2;
mergeSort( stanga , mijloc );
mergeSort( mijloc+1 , dreapta);
interclasare( stanga, dreapta );
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(unsigned i = 1 ; i <= n ; i++)
scanf("%d",&a[i]);
mergeSort(1,n);
for(unsigned i = 1 ; i <= n ; i++)
printf("%d ",a[i]);
return 0;
}