#include"stdio.h"
/*我们用 i 来表示{1,4,6,8}中的第一个元素1;
用 j 来表示{2,7,9,12}中的第一个元素2;
用 k 来表示新数组也就是待排序的数组的第一个元素;
判断 i 和 j的大小;
如果i<j,那么就让k=i;i++,k++;
如果i>j,那么就让k=j;j++,k++;
最后,一定会有一个数组里面留下元素,
{2,7,9,12}中会有9和12留下,最后再把9和12放在待排序的数组里面
所以如果有一个数组是{1,4,6,8,2,7,9,12};
要对它进行排序,给它分成两半分别是{1,4,6,8}和{2,7,9,12};
设三个变量left代表1,mid代表8,right代表12;
left 到 mid 就是{1,4,6,8},mid+1到 right 就是{2,7,9,12}*/
int merge(int r[],int s[],int left,int mid,int right)
{
int i,j,k;
i=left;
j=mid+1;
k=left;
while((i<=mid)&&(j<=right))
if(r[i]<=r[j])
{
s[k] = r[i];
i++;
k++;
}
else
{
s[k]=r[j];
j++;
k++;
}
while(i<=mid)
s[k++]=r[i++];
while(j<=right)
s[k++]=r[j++];
return 0;
}
int merge_sort(int r[],int s[],int left,int right)
{
int mid;
int t[20];
if(left==right)
s[left]=r[right];
else
{
mid=(left+right)/2;
merge_sort(r,t,left,mid);
merge_sort(r,t,mid+1,right);
merge(t,s,left,mid,right);
}
return 0;
}
int main()
{
int a[10];
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
merge_sort(a,a,0,9);
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}