分治法实现合并排序
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
voidmerge(inta[],intp,intq,intr)
{
inti,j,k;
int*tmp=(int*)malloc((r-p+1)*sizeof(int));
i=p;
j=q+1;
k=0;
while(i<=q&&j<=r)
{
if(a[i]<a[j])
{
tmp[k]=a[i++];
}
else
{
tmp[k]=a[j++];
}
k++;
}
while(i<=q)
{
tmp[k++]=a[i++];
}
while(j<=r)
{
tmp[k++]=a[j++];
}
for(i=0;i<k;i++)
{
a[p+i]=tmp[i];
}