Pagini recente » Cod sursa (job #1130307) | Cod sursa (job #487828) | Cod sursa (job #1409421) | Cod sursa (job #2448588) | Cod sursa (job #3237589)
#include <bits/stdc++.h>
using namespace std;
ifstream fin( "algsort.in" );
ofstream fout( "algsort.out" );
const int DIM = 5e5 + 1;
int v[DIM], aux[DIM];
void mergesort( int l, int r ) {
if ( l == r ) return;
if ( l + 1 == r ) {
if ( v[l] > v[r] ) swap(v[l], v[r]);
return;
}
int mid = (l + r) / 2;
mergesort(l, mid);
mergesort(mid + 1, r);
int i = l, j = mid + 1, p = l;
while ( i <= mid && j <= r ) {
if ( v[i] < v[j] ) {
aux[p++] = v[i++];
} else {
aux[p++] = v[j++];
}
}
while ( i <= mid ) aux[p++] = v[i++];
while ( j <= r ) aux[p++] = v[j++];
for ( int i = l; i <= r; ++i ) v[i] = aux[i];
}
int main() {
ios_base::sync_with_stdio(0);
fin.tie(0);
int n;
fin >> n;
for ( int i = 1; i <= n; ++i ) {
fin >> v[i];
}
mergesort(1, n);
for ( int i = 1; i <= n; ++i ) {
fout << v[i] << " ";
}
fin.close();
fout.close();
return 0;
}