利用归并排序法对序列排序的示意图(递归法):
一、算法分析:利用递归的分治方法:1、将原序列细分,直到成为单个元素;2、在将分割后的序列一层一层地按顺序合并,完成排序。细分通过不断深入递归完成,合并通过递归一层层返回完成。
二、C语言代码
1、完成排序的三个函数
void MergeSort(int l[],int lenght)
{
int tmp[lenght];
MSort(l,tmp,,lenght);
}
/*分:MSort将原来的序列不断细分,直到为1,再由Merge归并*/
void MSort(int l[],int tmp[],int left,int right)
{
int mid;
if(left!=right)
{
mid=(left+right)/; //将待排序序列分成两部分
MSort(l,tmp,left,mid); //将左边排序
MSort(l,tmp,mid+,right); //将右边排序
Merge(l,tmp,left,mid,right); //将已排序的两部分合并
}
}
/*数组tmp只是作为临时存储,归并后,再将有