Pagini recente » Cod sursa (job #1757979) | Cod sursa (job #251679) | Cod sursa (job #1172768) | Cod sursa (job #2014318) | Cod sursa (job #1855119)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int A[500005], B[500005], N, k;
void Read()
{
fin >> N;
for(int i=1; i<=N; i++)
fin >> A[i];
}
void Merge(int L, int M, int R)
{
int i=L, j=M+1, k=0;
while(i<=M && j<=R)
{
if(A[i] < A[j]) B[k] = A[i++];
else B[k] = A[j++];
k++;
}
while(i <= M) B[k++] = A[i++];
while(j <= R) B[k++] = A[j++];
for(i=L; i<=R; i++) A[i] = B[i-L];
}
void MergeSort(int Left, int Right)
{
if(Left < Right)
{
int Mid = (Left+Right)/2;
MergeSort(Left, Mid);
MergeSort(Mid+1, Right);
Merge(Left, Mid, Right);
}
}
void Print()
{
for(int i=1; i<=N; i++)
fout << A[i] << ' ';
fout << '\n';
}
int main()
{
Read();
MergeSort(1, N);
Print();
return 0;
}