Pagini recente » Cod sursa (job #737975) | Cod sursa (job #449500)
Cod sursa(job #449500)
#include<iostream.h>
int a[1000000],x, v[1000000];
int cls(int *b, int *c,int n, int m, int *aa)
{ int i = 1 , j = 1, k =1;
while((i <= n) || (j <= m))
{
if((i <= n) && (j <= m))
{
if( b[i] <= c[j])
aa[k++] = b[i++];
else
aa[k++] = c[j++];
continue;
}
if (i <= n)
aa[k++]= b[i++];
else
aa[k++] = c[j++];
}
return 0;
}
int citire(int t,int *d)
{
for(int i = 1; i <= t; i ++) scanf("%d ", &d[i]);
}
void merge( int left, int right)
{
if( left == right) return;
if( left == right - 1)
{
if (v[left] > v[right])
v[ left ] = v[ right ] ^ v[ left ] ^ ( v[ right ] = v[ left ] );
return;
}
merge( left, (left + right) / 2);
merge( ( left + right )/2 + 1, right);
/*cout<<"intervalul : "<< left<<" "<< right<< " : ";
for( int i = left; i <= right ; ++i)
cout<< v[ i ]<<" ";
cout<<endl;*/
int mij = left + right; mij /=2;
cls( v + left - 1, v + mij , mij - left + 1, right - mij , a + left - 1);
for( int i = left; i <= right; ++i)
v[i]=a[i];
/*for( int i = left; i <= right ; ++i)
cout<< v[ i ]<<" ";
cout<<endl;*/
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d ", &x);
citire(x,v);
merge(1, x);
for(int i=1; i <= x;i++) printf("%d ", v[i]);
return 0;
}