基于分治的双递归 基于分治的双递归
发布时间
阅读量:
阅读量
归并排序基于分治策略与递归机制进行操作,其双重递归的具体实现方式究竟是怎样的呢?今日在理解过程中遇到了一些困惑,始终未能彻底掌握其中的原理。经过深入思考并查阅相关资料后,终于清晰地掌握了其递归过程的实际运作方式!
致已熟悉归并排序的开发者
代码示例:
void Merge(int r[],int r1[],int s,int m,int t)
//归并子序列
{
int i=s,j=m+1;
int k=s;
while(i<=m&&j<=t)
{
if(r[i]<=r[j]) r1[k++]=r[i++];
else r1[k++]=r[j++];
}
while(i<=m) r1[k++]=r[i++];
while(j<=t) r1[k++]=r[j++];
}
void MergeSort(int r[],int s,int t)
{
int m,r1[1000];
if(s==t) return;//递归的边界条件 只有一个记录 已经有序
else
{
m=(s+t)/2;//划分
//1
MergeSort(r,s,m); //求解子问题1,
全部评论 (0)
还没有任何评论哟~
