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数组有剩余不用处理,刚好就是它们的位置 // 合并结束 } }