# include <stdio.h>
void hebing(int* a,int first,int last,int* tmp);
void xianshi(int* a);
void guibing(int*a,int first,int last,int*tmp);
int main()
{
int a[9]={9,8,7,6,5,4,3,2,1};
int tmp[9];
xianshi(a);
hebing(a,0,8,tmp);
xianshi(a);
guibing(a,0,8,tmp);
xianshi(a);
return 0;
}
void hebing(int* a,int first,int last,int* tmp)
{
int i=first;
int mid=(first+last)/2;
int j=mid+1;
int k=0;
while(i<=mid && j<=last)
{
if(a[i]<a[j])
tmp[k++]=a[i++];
else
tmp[k++]=a[j++];
}
while(i<=mid)
tmp[k++]=a[i++];
while(j<=last)
tmp[k++]=a[j++];
for(i=0;i<k;i++)
{
a[first+i]=tmp[i];
}
}
void xianshi(int* a)
{
for(int i=0;i<9;i++)
printf("%d ",a[i]);
printf("\n");
}
void guibing(int*a,int first,int last,int*tmp)
{
if(first<last)
{
guibing(a,first,(first+last)/2,tmp);
guibing(a,(first+last)/2+1,last,tmp);
hebing(a,first,last,tmp);
}
}
void hebing(int* a,int first,int last,int* tmp);
void xianshi(int* a);
void guibing(int*a,int first,int last,int*tmp);
int main()
{
int a[9]={9,8,7,6,5,4,3,2,1};
int tmp[9];
xianshi(a);
hebing(a,0,8,tmp);
xianshi(a);
guibing(a,0,8,tmp);
xianshi(a);
return 0;
}
void hebing(int* a,int first,int last,int* tmp)
{
int i=first;
int mid=(first+last)/2;
int j=mid+1;
int k=0;
while(i<=mid && j<=last)
{
if(a[i]<a[j])
tmp[k++]=a[i++];
else
tmp[k++]=a[j++];
}
while(i<=mid)
tmp[k++]=a[i++];
while(j<=last)
tmp[k++]=a[j++];
for(i=0;i<k;i++)
{
a[first+i]=tmp[i];
}
}
void xianshi(int* a)
{
for(int i=0;i<9;i++)
printf("%d ",a[i]);
printf("\n");
}
void guibing(int*a,int first,int last,int*tmp)
{
if(first<last)
{
guibing(a,first,(first+last)/2,tmp);
guibing(a,(first+last)/2+1,last,tmp);
hebing(a,first,last,tmp);
}
}