import java.util.*;

public class Solution {
    public void merge(int A[], int m, int B[], int n) {
        // 初始化辅助指针
        int pA = m - 1; // 指向A组数据末尾
        int pB = n - 1; // 指向B组数据末尾
        int end = m + n - 1; // 指向A数组的末尾

        // 从两数组中最大的元素开始遍历,直到其中一个数组遍历完
        while (pA >= 0 && pB >= 0) {
            // 移动较大者到A组末尾
            A[end--] = A[pA] > B[pB] ? A[pA--] : B[pB--];
        }

        // 处理剩余数组
        while (pB >= 0) { // B数组有剩余
            A[end--] = B[pB--];
        }
        // A数组有剩余不用处理,刚好就是它们的位置
        // 合并结束 
    }
}