题目描述:力扣

解题思路:

要求原地算法,直接将B插入A中,思路是从后往前,进行比较,因为如果从前往后比较,很大可能会有插入,对于数组来说插入的耗时太大了。

class Solution {
    public void merge(int[] A, int m, int[] B, int n) {
        int i = m-1;
        int j = n-1;
        while(j>=0 && i>=0){
            if(A[i]>B[j]){
                A[i+j+1] = A[i];
                i--;
            }
            else{
                A[i+j+1] = B[j];
                j--;
            }
        }
        if(i<0){
            for(int l = 0; l<=j;l++){
                A[l]=B[l];
            }
        }
    }
}