文档介绍:#include<>
void Merge(int *L,int low,int mid,int high) //归并
{
int i=low,j=mid+1,p=0;
int *temp;
temp=(int *)malloc((high-low+1)*sizeof(int)); //用一个动态的数组存放暂时排好序的数组
if(!temp)return;
while(i<=mid&&j<=high)
temp[p++]=(L[i]<=L[j])?L[i++]:L[j++];
while(i<=mid) //添加从i到mid的数到temp中
temp[p++]=L[i++];
while(j<=high) //添加从j到high的数到temp中
temp[p++]=L[j++];
for(p=0,i=low;i<=high;p++,i++)
L[i]=temp[p];//将temp中一排好序的数放入L中
}
void MergeSort(int L[],int low,int high) //拆分
{
int mid;
if(low<high)
{
mid=(low+high)/2;
MergeSort(L,low,mid);
for(int i=low;i<=high;i++)
printf("%d ",L[i]);
printf("\n");
MergeSort(L,mid+1,high);
for(int j=low;j<=high;j++)
printf("%d ",L[j]);
printf("\n");
//printf("归并: ");
Merge(L,low,mid,high);
}
}
void main()
{
int a[9]={5,4,2,1,3,6,9,8,7};
int low=0,high=8;
printf("输入的数组: ");
for(int j=0;j<9;j++)
printf("%d ",a[j]);
printf("\n");
MergeSort(a,low,high);
printf("最终的排序的结果是:");
for(int i=low;i<=high;i++)
printf("%d ",a[i]);
printf("\n");
}垄耶赣纺省涛麻盆浙集严张苫斡捶啃窥嘱锯仟星赎脓检采铸毁键澄镊屋菏纱逞熊慷吹缴询艺贮箩黄鸽绳洋丰奖档犊阻兹变咬呼跌生贞敦兜