合并有序数组
题:给定两个排序后的数组A和数组B,其中A的末端有足够的缓冲空间容纳B,编写一个方法,将B合并到A并排序
思路:参照归并排序
- 对A数组进行从后往前进行填充
- A和B数组两两比较,大的数填到A中
public static void main(String[] args) {
int[] arr = new int[20];
for(int i=0; i<10; i++) {
arr[i]=i;
}
int[] arr01 = {10,12,13,18};
sortAB(arr,arr01,10);
for(int i=0; i<10+arr01.length; i++) {
System.out.print(arr[i]+" ");
}
}
public static void sortAB(int[] A, int[] B, int aLen){
int p = 10+B.length-1;
int pA = A.length-1;
int pB = B.length-1;
while(pA>=0 && pB>=0) {
if(A[pA]>=B[pB]) {
A[p--]=A[pA--];
}else {
A[p--]=B[pB--];
}
}
while(pB>=0) {
A[p--]=B[pB--];
}
}