Pagini recente » Cod sursa (job #312913) | Cod sursa (job #722993) | Cod sursa (job #2859057) | Cod sursa (job #1247394) | Cod sursa (job #1365838)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int maxn = 100005;
int n, a[maxn], b[maxn];
inline void mergesort(int st, int dr) {
if(st == dr)
return;
int mid = ((st + dr) >> 1);
mergesort(st, mid);
mergesort(mid + 1, dr);
int i = st, j = mid + 1;
int p = st;
while(i <= mid && j <= dr)
if(a[i] <= a[j])
b[p ++] = a[i ++];
else
b[p ++] = a[j ++];
while(i <= mid)
b[p ++] = a[i ++];
while(j <= dr)
b[p ++] = a[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] << " ";
}