#include <stdio.h>
void merge(int a[],int p,int q,int r)
{
int n1=q-p+1,n2=r-q;
int b1[n1];
int b2[n2];
int i=0,j=0,temp1=p,temp2=q;
while(p<=q)
{
b1[i]=a[p];
++i;
++p;
}
while(q+1<=r)
{
b2[j]=a[q+1];
++j;
++q;
}
p=temp1;q=temp2;
i=0,j=0;
while(p<=r)
{
if(i==n1)
{
a[p]=b2[j];
++j;
}
else if(j==n2)
{
a[p]=b1[i];
++i;
}
else if(b1[i]<b2[j])
{
a[p]=b1[i];
++i;
}
else
{
a[p]=b2[j];
++j;
}
++p;
}
}
void merge_sort(int a[],int p,int r)
{
int q
分治法之合并排序(C实现)
最新推荐文章于 2024-03-18 11:56:49 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)