合并两个有序数组
两个有序整数数组 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;
}
}