1.既然空间足够,那么直接从后往前比较,两个数组各出1个,较大的放到A[长度为m+n]的后面,直到某个数组比较完。
2.若A完而B有余,则将剩余B继续放到A空出的前面位置,正好。若B完而A有余,哈哈,不是刚好把空填满了嘛,收工。
void merge(int* A, int ALen, int m, int* B, int BLen, int n) 
{
    int i = m - 1, j = n - 1, k = m + n -1;
    //从后往前处理,A[i]和B[i]哪个大就放在A的后面
    while(i >= 0 && j >= 0)
    {
        if(A[i] > B[j])
            A[k--] = A[i--];
         else
            A[k--] = B[j--];
    }
    while(j >= 0)    //若B有剩余的,从后往前依次放到A的前部分
        A[k--] = B[j--];
}