#include <stdio.h>
#define M 5
void MergeSort(int r[],int r1[],int r2[],int s,int t);
void Merge(int r[],int r1[],int s,int m,int t);
int main()
{
int i;
int r[M];
int r1[M];
int r2[M];
for(i = 0; i < M; i ++)
{
scanf("%d",&r[i]);
}
MergeSort(r,r1,r2,0,M-1);
for(i = 0; i < M; i ++)
{
printf("%d/n",r1[i]);
}
return 0;
}
void MergeSort(int r[],int r1[],int r2[],int s,int t)
{
if(s == t)
{
r1[s] = r[s];
}
else
{
int m;
m = (s + t)/2;
MergeSort(r, r2, r1, s, m); //归并排序前半个子序列
MergeSort(r, r2, r1, m+1, t); //归并排序后半个子序列
Merge(r2, r1, s, m, t); //将两个已排序的子序列归并
}
}
void Merge(int r[],int r1[],int s,int m,int t)
{
int i;
int j;
int k;
i = s;
j = m + 1;
k = s;
while(i <= m && j <= t)
{
if(r[i] <= r[j])
{
r1[k] = r[i];
k++;
i++;
}
else
{
r1[k] = r[j];
k++;
j++;
}
}
if(i <= m)
{
while(i <= m)
{
r1[k] = r[i];
k++;
i++;
}
}
else
{
while(j <= t)
{
r1[k] = r[j];
k++;
j++;
}
}
}