#include<stdio.h>
#include<unistd.h>
void Merge(int *a,int low,int mid,int high)
{
int *clone=new int[high-low+1];
if(!clone) return ;
int l=low;
int s=mid+1;
int i=0;
while((l<=mid)&&(s<=high))
{
if(a[l]<=a[s])
{
clone[i]=a[l];
++l;
++i;
}
else
{
clone[i]=a[s];
++s;
++i;
}
}
while(l<=mid)
clone[i++]=a[l++];
while(s<=high)
clone[i++]=a[s++];
for(int j=0, i=low;i<=high;i++,j++)
{
a[i]=clone[j];
printf("%d ",a[i]);
}
printf("/n");
sleep(1);
delete [] clone;
}
void MergeSort(int *a,int low,int high)
{
int mid=0;
if(low<high)
{
mid=(low+high)/2;
printf("%d %d %d /n",low,mid,high);
MergeSort(a,low,mid);
MergeSort(a,mid+1,high);
Merge(a,low,mid,high);
}
}
int main(int argc,char **argv)
{
int matir[7]={49,38,65,97,76,13,27};
MergeSort(matir,0,6);
for(int i=0;i<7;i++)
{
printf("%d ",matir[i]);
}
printf("/n");
}