1. 程式人生 > 其它 >經典計算機專業最全電子書合集

經典計算機專業最全電子書合集

兩個有序整數陣列 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;
    }
}