Pagini recente » Cod sursa (job #2623648) | Cod sursa (job #31808) | Cod sursa (job #741983) | Cod sursa (job #2377479) | Cod sursa (job #1113556)
#include <fstream>
#define MAXN 500001
using namespace std;
int v[MAXN], interc[MAXN], p, i1, i2;
void merge_sort( int start, int stop ) {
if( stop - start > 0 ) {
int mid = ( start + stop ) >> 1;
merge_sort( start, mid );
merge_sort( mid + 1, stop );
i1 = start;
i2 = mid + 1;
p = 0;
while( i1 <= mid && i2 <= stop )
if( v[i1] < v[i2] ) {
interc[p++] = v[i1];
++i1;
}
else {
interc[p++] = v[i2];
++i2;
}
while( i1 <= mid )
interc[p++] = v[i1++];
while( i2 <= stop )
interc[p++] = v[i2++];
for( i1 = start, i2 = 0 ; i1 <= stop ; ++i1, ++i2 )
v[i1] = interc[i2];
}
}
int main () {
ifstream f( "algsort.in" );
ofstream g( "algsort.out" );
int n;
f>>n;
for( int i = 0 ; i < n ; ++i )
f>>v[i];
merge_sort( 0, n - 1 );
for( int i = 0 ; i < n ; ++i )
g<<v[i]<<" ";
f.close();
g.close();
return 0;
}