![]() |
#2
玩出来的代码2011-09-18 10:40
|

#include <stdio.h>
int a[]={78,15,24,16,89,135,4,66};
int b[8];
void merge1(int low,int mid,int high)
{
int i=low,j=mid+1;
int k=0;
while (i < mid && j < high)
if (a[i]<a[j])
b[k++]=a[i++];
else
b[k++]=a[j++];
while (i<mid)
b[k++]=a[i++];
while (j<high)
b[k++]=a[j++];
}
void sort1(int low,int high)
{
if(low<high)
{
int mid=(low+high)/2;
printf("sort (%d-%d, %d-%d) %d %d %d %d %d %d %d %d\n",
low, mid, mid+1, high,
b[0],b[1], b[2], b[3], b[4], b[5], b[6], b[7]);
sort1(low,mid);
sort1(mid+1,high);
merge1(low,mid,high);
printf("merge (%d-%d, %d-%d) to %d %d %d %d %d %d %d %d\n",
low, mid, mid+1, high,
b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]);
}
}
void main()
{
sort1(0,7);
}
int a[]={78,15,24,16,89,135,4,66};
int b[8];
void merge1(int low,int mid,int high)
{
int i=low,j=mid+1;
int k=0;
while (i < mid && j < high)
if (a[i]<a[j])
b[k++]=a[i++];
else
b[k++]=a[j++];
while (i<mid)
b[k++]=a[i++];
while (j<high)
b[k++]=a[j++];
}
void sort1(int low,int high)
{
if(low<high)
{
int mid=(low+high)/2;
printf("sort (%d-%d, %d-%d) %d %d %d %d %d %d %d %d\n",
low, mid, mid+1, high,
b[0],b[1], b[2], b[3], b[4], b[5], b[6], b[7]);
sort1(low,mid);
sort1(mid+1,high);
merge1(low,mid,high);
printf("merge (%d-%d, %d-%d) to %d %d %d %d %d %d %d %d\n",
low, mid, mid+1, high,
b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]);
}
}
void main()
{
sort1(0,7);
}