/*题目内容:
使用合并排序算法编程,对整数数组排序
输入描述
第一行输入元素个数,第二行输入要排序的数组
输出描述
排好序的数组
输入样例
7
2 5 4 1 3 7 6
输出样例
1 2 3 4 5 6 7
*/
#include<stdio.h>
#define MAX 100
int B[MAX];
int Merge(int A[],int n)
{
int mid,s1,s2,i,b;
mid=n/2;
s1=0;s2=mid;
b=0;
while(s1<mid&&s2<n)
if(A[s1]<=A[s2])
B[b++]=A[s1++];
else
B[b++]=A[s2++];
if(s1<mid)
for(i=s1;i<mid;i++)
B[b++]=A[i];
else
for(i=s2;i<n;i++)
B[b++]=A[i];
for(i=0;i<n;i++)
A[i]=B[i];
return 1;
}
int MergeSort(int A[],int n)
{
if(n<=1)
return 1;
else
{
MergeSort(A,n/2);
MergeSort(A+n/2,n-n/2);
Merge(A,n);
return 1;
}
}
int main()
{
int a[1000],n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
MergeSort(a,n);
for(i=0;i<n;i++)
{
printf("%d ",B[i]);
}
return 0;
}