今天做九度1004题求中间值时,用到了两个非递减数组合并成为一个数组的问题,虽然自己可以动手写,但无奈人太懒,嫌麻烦,因此网上download一个,遂记下来看看。不过以后不能酱紫,这么基本简单的算法。。。。
void MergeTwoArray(int *p1, int *p2, int n1, int n2, int *pOut)
{
int n = n1 + n2;
int i = 0, j = 0, k = 0;
for(i = 0, j = 0; k < n;)
{
if(i < n1 && j < n2)
pOut[k ++] = p1[i] <= p2[j] ? p1[i++] : p2[j++];
else
pOut[k ++] = i < n1 ? p1[i++] : p2[j++];
}
}
还有一个问题,是用了malloc函数时候,最好配套使用free函数,好习惯,free (p);