#include<iostream>
using namespace std;
void Merge(int a[],int first,int mid,int end,int temp[])
{
int i,m,j,n,k;
i=first;m=mid;j=mid+1;n=end;
k=0;
while(i<=m&&j<=n)
{
if(a[i]<=a[j])
temp[k++]=a[i++];
else
temp[k++]=a[j++];
}
while(i<=m)
{
temp[k++]=a[i++];
}
while(j<=n)
{
temp[k++]=a[j++];
}
for(i=0;i<k;i++)
{
a[first+i]=temp[i];
}
}
void Split(int num[],int first,int end,int temp[])
{
int mid;
if(first<end)
{
mid=(first+end)/2;
Split(num,first,mid,temp);
Split(num,mid+1,end,temp);
Merge(num,first,mid,end,temp);
}
}
int main()
{
int num[]={4,5,23,1,6,67,87,53};//test ;
int temp[8];
Split(num,0,7,temp);
for(int i=0;i<8;i++)
cout<<num[i]<<" ";
cout<<endl;
system("pause");
return 0;
}