Pagini recente » Profil florinhaja | Cod sursa (job #560087) | Cod sursa (job #603387) | Cod sursa (job #1245779) | Cod sursa (job #1789541)
#include <fstream>
const int NMAX = 500000;
using namespace std;
ifstream cin ( "algsort.in" );
ofstream cout ( "algsort.out" );
int v[NMAX+5], inter[NMAX+5];
void my_merge(int st, int dr){
if ( st == dr )
return ;
int mid = ( st + dr ) / 2;
my_merge ( st, mid );
my_merge ( mid + 1, dr );
int k = 0, i = st, j = mid + 1;
while ( i <= mid && j <= dr ){
if ( v[j] < v[i] )
inter[++k] = v[j++];
else
inter[++k] = v[i++];
}
while ( i <= mid ) {
inter[++k] = v[i];
++i;
}
while ( j <= dr ) {
inter[++k] = v[j];
++j;
}
for ( i = st; i <= dr; i ++ )
v[i] = inter[i-st+1];
}
int main() {
int n;
cin >> n;
for ( register int i = 1 ; i <= n ; ++ i )
cin >> v[i];
my_merge ( 1, n );
for ( register int i = 1 ; i <= n ; ++ i )
cout << v[i] << " ";
return 0;
}