假设两个递增排序的数组合并成为一个递增排序的数组,并且a数组的长度m,b数组的长度n,同时a数组的容量大于等于m+n,所以不要额外申请数组来实现,直接在a数组中操作。思路是从后往前循环,把最大的数字放在最后面,这样可以直接在a数组上操作。
public static void mergedTwoSortedArray(int [] a,int m,int [] b,int n){
int k = m+n-1;
int i = m-1;
int j = n-1;
while(i >=0 && j >= 0){
if(a[i]>=b[j])
a[k--]=a[i--];
else
a[k--] = b[j--];
}
while(j>=0)
a[k--]=b[j--];
while(i>=0)
a[k--]=a[i--];
return;
}