Pagini recente » Cod sursa (job #2297103) | Cod sursa (job #1653120) | Cod sursa (job #2481909) | Cod sursa (job #843076) | Cod sursa (job #1387117)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, a[500008], t[500008];
void Sortare(int st, int dr);
void Interclasare(int st, int mij, int dr);
int main()
{
fin >> n;
for ( int i = 1; i <= n; i++ )
fin >> a[i];
Sortare(1, n);
for ( int i = 1; i <= n; i++ )
fout << a[i] << ' ';
return 0;
}
void Sortare(int st, int dr)
{
if ( st >= dr ) return;
int mij = (st + dr)/2;
Sortare(st, mij);
Sortare(mij + 1, dr);
Interclasare(st, mij, dr);
}
void Interclasare(int st, int mij, int dr)
{
int p = 0;
int i = st;
int j = mij + 1;
while ( i <= mij && j <= dr)
if ( a[i] < a[j] )
t[++p] = a[i++];
else
t[++p] = a[j++];
while ( i <= mij )
t[++p] = a[i++];
while ( j <= dr )
t[++p] = a[j++];
for ( int i = 1, j = st; i <= p; i++, j++ )
a[j] = t[i];
}