Pagini recente » Cod sursa (job #402683) | Cod sursa (job #1803255) | Cod sursa (job #2064803) | Cod sursa (job #2892103) | Cod sursa (job #2469558)
#include <fstream>
#define nmax 500050
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int n, a[nmax], b[nmax];
void interclasare(long l, long m, long r) {
int i, j, k = 1;
for (i = l, j = m+1; i <= m || j <= r; )
if (j > r || (i <= m && a[i] < a[j]))
b[k++] = a[i++];
else
b[k++] = a[j++];
k = 1;
for (i = l; i <= r; i++)
a[i] = b[k++];
}
void mergesort(long st, long dr) {
if (st < dr) {
long mid = st + (dr-st)/2;
mergesort(st, mid);
mergesort(mid+1, dr);
interclasare(st, mid, dr);
}
}
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
fin >> a[i];
mergesort(1, n);
for (int i = 1; i <= n; i++)
fout << a[i] << " ";
return 0;
}