經典計算機專業最全電子書合集
阿新 • • 發佈:2021-07-16
兩個有序整數陣列 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; } }