Pagini recente » Cod sursa (job #1101527) | Cod sursa (job #2109139) | Cod sursa (job #1294919) | Cod sursa (job #1289275) | Cod sursa (job #937119)
Cod sursa(job #937119)
#include<fstream>
#define NN 500009
#define in ios::in
#define out ios::out
using namespace std;
fstream g("algsort.out",out);
int v[NN] , n , x[NN] ;
void read();
void interclaseaza(int st , int mid , int dr );
void Msort(int st , int dr );
void wrs();
int main()
{
read();
Msort( 1 , n );
wrs();
return 0;
}
void read()
{
fstream f("algsort.in",in);
f >> n;
for( int i=1 ; i<=n ; i++)
f >> v[i];
}
void wrs()
{
for( int i=1; i<=n ; i++)
g << v[i] << " ";
}
void Msort( int st , int dr )
{
if( dr > st )
{
int mid = ( st + dr ) >> 1;
Msort( st , mid );
Msort( mid+1 , dr );
interclaseaza( st , mid , dr );
}
}
void interclaseaza( int st , int mid , int dr )
{
int i = st , j = mid + 1 , m = 0;
while( i<=mid && j<=dr )
if ( v[i] < v[j] )
x[++m] = v[i++];
else
x[++m] = v[j++];
for(;i<=mid;i++)
x[++m] = v[i];
for(;j<=dr;j++)
x[++m] = v[j];
for( int i = st , j= 1; j<=m;j++)
v[i++] = x[j];
}