有两个从小到大排序以后的数组A和B,其中A的末端有足够的缓冲空容纳B。请编写一个方法,将B合并入A并排序。
给定两个有序int数组A和B,A中的缓冲空用0填充,同时给定A和B的真实大小int n和int m,请返回合并后的数组。
import java.util.*;
public class Merge {
public int[] mergeAB(int[] A, int[] B, int n, int m) {
//标记A数组和B数组遍历位置的下标
int indexA = n - 1;
int indexB = m - 1;
//遍历时标记元素放的位置
int index = n - 1 + m;
/**
* 每一轮遍历,比较的是此时数组A和数组B对应索引所指的元素,挑出最大的放到A数组最后index的位置
*/
while(indexA >= 0 && indexB >= 0){
if(A[indexA] > B[indexB]){
A[index] = A[indexA];
indexA--;
}
else{
A[index] = B[indexB];
indexB--;
index--;
* 查看B数组中的元素是否遍历完成,没有遍历完成此时遍历剩余的元素到A中
*
* A: 4 5 7 10
* B:1 2
while(indexB>=0){
A[indexB] = B[indexB];
return A;