A与B两个数组均是有序的,只需将B数组插入到A数组中便能解决这个问题

比较posA指向元素和posB指向元素的大小;

import java.util.*;

public class Solution {

public void merge(int A[], int m, int B[], int n) {
//先将B数组连接到A的后边
    for (int i = 0; i < n; i++) {
        A[m + i] = B[i];
    }
//定义两个指针;初始第一个指针posA指向A中第一个元素的位置,第二个指针posB指向B中第一个元素的位置,
    int posB = m;
    int posA = 0;
    //移动指针,找到A中第一个比B中元素大的位置,将B中的元素插入当前位置即可;
    //当遍历完B中所有元素或者A中元素都比B中元素小时退出循环
    
    while (posB < m + n && posA<posB) {
    //移动指针,找到A中第一个比B中元素大的位置,将B中的元素插入当前位置即可
        if ( A[posA]> A[posB] ) {
            int temp = A[posB];
            //先将之后的所有元素后移,再将元素插入到A中
            for (int i = posB; i > posA; i--) {
                A[i] = A[i - 1];
            }
            A[posA] = temp;
            //接着遍历B中剩余的元素
            posB++;
        }
        //由于A B均是有序的,遍历完之后只需与后边一个元素比较即可
        posA++;
    }
}

}