Pagini recente » Cod sursa (job #307386) | Cod sursa (job #2236913) | Cod sursa (job #290498) | Cod sursa (job #101468) | Cod sursa (job #2620695)
#include <iostream>
#include <fstream>
#define Maxx 500001
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int tmp[Maxx],A[Maxx],N;
void MergeSort1(int A[], int st, int dr)
{
if(st < dr)
{
int m = (st + dr) / 2;
MergeSort1 (A, st, m);
MergeSort1 (A, m + 1, dr);
int i = st;
int j = m + 1;
int k = 0;
while (i <= m && j <= dr)
if( A[i] < A[j])
tmp[++k] = A[i++];
else
tmp[++k] = A[j++];
while (i <= m)
tmp[++k] = A[i++];
while (j <= dr)
tmp[++k] = A[j++];
j = 1;
for (i = st; i <= dr ; i ++ && j++)
A[i] = tmp[j];
}
}
int main()
{
f >> N;
for ( int i=1;i<=N;i++ )
f >> A[i];
MergeSort1(A,1,N);
for ( int i=1;i<=N;i++ )
g << A[i] << " ";
return 0;
}