void merger(int *src,int length,int *det) //一次归并 相当于合并两个有序数组
{
int *p=src;
int *q=src+length/2;
int *s=det;
while(p<src+length/2&&q<src+length)
{
if(*p<*q)
{
*s=*p;
p++;
s++;
}
else
{
*s=*q;
q++;
s++;
}
}
while(p<src+length/2)
{
*s=*p;
s++;
p++;
}
while(q<src+length)
{
*s=*q;
s++;
q++;
}
p=src;
q=det;
int i;
for(i=0;i<length;i++)
{
p[i]=q[i];
}
}
void mergers(int *src,int length,int *det) //递归调用归并函数
{
if(length/2>0)
{
mergers(src,length/2,det);
mergers(src+length/2,length-length/2,det);
}
merger(src,length,det);
}
归并排序
最新推荐文章于 2024-12-15 17:47:59 发布