void mergeA(int a[],int l,int m,int r)
{
int b[r+1];//缓存开销
int i,j;
for (i = m+1;i > l;--i)
{
b[i-1] = a[i-1];
}
for (j = m;j < r;++j)
{
b[r+m-j] = a[j+1];
}
for (int k = l;k <= r; ++k)
{
if (b[i] < b[j])
{
a[k] = b[i++];
}
else
{
a[k] = b[j--];
}
}
}
//就位归并,l=0,r = N-1进行测试
void mergeSort(int a[],int l,int r)
{
if (r <= l)
{
return;
}
int m = (l+r)/2;
mergeSort(a,l,m);
mergeSort(a,m+1,r);
mergeA(a,l,m,r);
}

被折叠的 条评论
为什么被折叠?



