难度:2
解法:
归并,如果是按照从小到达从左往右插入A数组,势必要新增一个临时的数组
换成从大到小从右往左,就可以省掉这部分空间
class Solution
{
public:
void merge(int A[], int m, int B[], int n)
{
int ia=m-1,ib=n-1;
int k=m+n-1;
while(ia>=0 || ib>=0)
{
if(ia>=0&&ib>=0)
{
if(A[ia]>B[ib]) A[k--]=A[ia--];
else A[k--]=B[ib--];
}
else if(ia>=0)
{
A[k--]=A[ia--];
}
else
{
A[k--]=B[ib--];
}
}
}
};