合并两个有序数组

两个有序整数数组 nums1 和 nums2 ,将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组

初始化nums1和nums2的元素数量分别为m和n。假设nums1的空间大小等于m+n,这样它就有足够的空间保存来自nums2的元素

public class MergeSortArray {
    public static void main(String[] args) {
        int[] nums1 = new int[]{1,3,5,7,9,0,0,0,0};
        int[] nums2 = new int[]{2,4,6,8};
        System.out.println(Arrays.toString(merge(nums1,5,nums2,4)));
    }
    public static int[] merge(int[] nums1,int m,int[] nums2,int n){
        System.arraycopy(nums2,0,nums1,m,n);//将nums2放入nums1
        Arrays.sort(nums1);
        return nums1;
    }
    //双指针
    public static int[] merge1(int[] nums1,int m,int[] nums2,int n){
        int[] nums1_copy = new int[m];
        System.arraycopy(nums1,0,nums1_copy,0,m);
        int p1=0;//指向nums1_copy
        int p2=0;//指向nums2
        int p=0;//指向nums1
        while(p1<m && p2<n){
            nums1[p++] = nums1_copy[p1] < nums2[p2] ?nums1_copy[p1++]:nums2[p2++];
        }
        return nums1;
    }
}
posted @ 2021-07-29 14:03  落笔生花  阅读(41)  评论(0)    收藏  举报