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



京公网安备 11010502036488号