Pagini recente » Cod sursa (job #2384959) | Cod sursa (job #2123958) | Cod sursa (job #2285464) | Cod sursa (job #1561693) | Cod sursa (job #1488951)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int maxn = 500005;
int n, a[maxn], b[maxn];
void mergesort(int st, int dr) {
if(st == dr)
return ;
int mid = (st + dr) / 2;
mergesort(st, mid);
mergesort(mid + 1, dr);
int i = st, j = mid + 1;
int ind = st;
while(i <= mid && j <= dr) {
if(a[i] <= a[j]) {
b[ind ++] = a[i];
++ i;
}
else {
b[ind ++ ] = a[j];
++ j;
}
}
while(i <= mid) {
b[ind ++] = a[i];
++ i;
}
while(j <= dr) {
b[ind ++] = a[j];
++ j;
}
for(int i = st ; i <= dr ; ++ i)
a[i] = b[i];
}
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;
}