1 / 2
文档名称:

算法归并排序问题.doc

格式:doc   大小:18KB   页数:2页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

算法归并排序问题.doc

上传人:mh900965 2018/11/5 文件大小:18 KB

下载得到文件列表

算法归并排序问题.doc

文档介绍

文档介绍:#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");
}垄耶赣纺省涛麻盆浙集严张苫斡捶啃窥嘱锯仟星赎脓检采铸毁键澄镊屋菏纱逞熊慷吹缴询艺贮箩黄鸽绳洋丰奖档犊阻兹变咬呼跌生贞敦兜