合并两个有序数组

题目描述

给出两个有序的整数数组 imgimg,请将数组 img合并到数组 img中,变成一个有序的数组
注意:
可以假设 img数组有足够的空间存放 img数组的元素, imgimg中初始的元素数目分别为 imgimg

代码实现

public class Solution {
    public void merge(int A[], int m, int B[], int n) {
    //dp[i]代表的意思是:第i位置上的值为A与B相比的最小的值
        int[] dp = new  int[m+n];//临时数组
        int i = 0;//A的下标初始值
        int j = 0;//B的下标初始值
        int index = 0;//dp的下标初始值
        while(i<m && j< n){//不到边界
            dp[index++] = (A[i]<B[j])? A[i++] : B[j++];
            //把最小的值放在dp[index]中,然后对应的下标++
        }
        while(i < m){//A中剩余的放到临时数组中
            dp[index++] = A[i++];
        }
         while(j < n){//B中的剩余放到临时数组中
            dp[index++] = B[j++];
        }
        
        for(int k = 0; k < dp.length; k++){//将临时数组的东西放到题目要求的A数组中
            A[k] = dp[k];
        }
                   
               
    }
}
posted @ 2020-09-17 22:07  ASini  阅读(159)  评论(0编辑  收藏  举报