Pagini recente » Cod sursa (job #229460) | Cod sursa (job #871740) | Cod sursa (job #1183658) | Cod sursa (job #2549980) | Cod sursa (job #498634)
Cod sursa(job #498634)
#include <fstream>
using namespace std;
int a[500000];
int c[500000];
void mergeSort( int a[], const int n ){
int p;
int i, j, li, lj,cc;
for ( p = 1; p < n; p <<= 1 ){
li = 0;
lj = 0;
while( lj + p < n ){
i = lj;
j = lj+p;
li=i+p;
lj=min(n,j+p);
cc = 0;
while ( i < li && j < lj )
c [ cc ++ ] = a [ i ] < a [ j ] ? a [ i ++ ] : a [ j ++ ];
while ( i < li )
c [ cc ++ ] = a [ i ++ ];
while ( j < lj )
c [ cc ++ ] = a [ j ++ ];
j = li - p - 1;
for ( i = lj - 1; i > j; -- i )
a [ i ] = c [ -- cc ];
}
}
}
int main(){
int i, n;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(i=0;i<n;++i)
f>>a[i];
f.close();
mergeSort(a,n);
for(i=0;i<n;++i)
g<<a[i]<<' ';
g<<'\n';
g.close();
return 0;
}