算法 【双指针】合并两个有序数组 求解代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public void merge(int A[], int m, int B[], int n) { int i = m - 1; // 指针i:指向A有效元素的最后一位 int j = n - 1; // 指针j:指向B有效元素的最后一位 int k = m + n - 1; // 指针k:指向A物理空间的最后一位(合并后元素的存放位置) // 同时遍历A、B的有效元素,取较大值放到A的k位置 while (i >= 0 && j >= 0) { if (A[i] > B[j]) { A[k--] = A[i--]; } else { A[k--] = B[j--]; } } // 若A的有效元素先遍历完,将B剩余元素依次放入A的剩余位置 if (i < 0) { while (j >= 0) { A[k--] = B[j--]; } } }