有两个从小到大排序以后的数组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) {
int indexA=n-1;
int indexB=m-1;
int indexC=A.length-1;
while(indexA>=0&indexB>=0){
if(A[indexA]>B[indexB]){
A[indexC]=A[indexA];
indexA--;
}else{
A[indexC]=B[indexB];
indexB--;
}
indexC--;
}
while(indexA>=0){
for(;indexA>=0;indexA--){
A[indexC]=A[indexA];
indexC--;
}
}
while(indexB>=0){
for(;indexB>=0;indexB--){
A[indexC]=B[indexB];
indexC--;
}
}
return A;
}
}
近期评论