Pagini recente » Cod sursa (job #2086962) | Cod sursa (job #130333) | Cod sursa (job #524647) | Cod sursa (job #1182752) | Cod sursa (job #1022146)
# include <fstream>
# define dim 500001
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int a[dim],b[dim],n;
void mergesort( int a[] , int st , int m , int dr )
{
int i,j,z;
i = 0 ; j = st;
// copiem prima jumate a vectorul a in b
while( j <= m )
b[i++] = a[j++];
i = 0; z = st;
// intersectam prima jumatate cu cea de-a doua
while( z < j && j <= dr )
if( b[i] <= a[j] )
a[z++] = b[i++];
else
a[z++] = a[j++];
// copiem elementele ramase (daca e cazul)
while ( z < j )
a[z++] = b[i++];
}
void sorteaza( int a[] , int st , int dr )
{
if( st < dr )
{
sorteaza(a,st,(st+dr)/2);
sorteaza(a,(st+dr)/2+1,dr);
mergesort(a,st,(st+dr)/2,dr);
}
}
void citeste()
{
in >> n;
for( int i = 1 ; i <= n ; ++i )
in >> a[i];
in.close();
}
void tipar()
{
for( int i = 1 ; i <= n ;++i )
out << a[i] << ' ';
out.close();
}
int main()
{
citeste();
sorteaza(a,0,n);
tipar();
return 0;
}