public static void main(String[] args) { int[] num1 = {1,3,5,7,9,0,0,0,0}; int[] num2 = {2,4,6,8}; // System.out.println("合并后的数组为:" + Arrays.toString(merge(num1, 5, num2, 4))); // System.out.println("合并后的数组为:" + Arrays.toString(merge1(num1, 5, num2, 4))); System.out.println("合并后的数组为:" + Arrays.toString(merge2(num1, 5, num2, 4))); }//合并两个有序数组 public static int[] merge(int[] num1, int m, int[] num2, int n) { System.arraycopy(num2, 0, num1, m, n); Arrays.sort(num1); return num1; } public static int[] merge1(int[] num1, int m, int[] num2, int n) { int[] num_copy = new int[m]; System.arraycopy(num1, 0, num_copy, 0, m); int p1 = 0; int p2 = 0; int p = 0; while (p1 < m && p2 < n) { num1[p++] = num_copy[p1] < num2[p2] ? num_copy[p1++]:num2[p2++]; } if (p1 < m) { System.arraycopy(num_copy, p1, num1, p1 + p2, m + n - p1 - p2); } if (p2 < n) { System.arraycopy(num2, p2, num1, p1 + p2, m + n - p1 - p2); } return num1; } public static int[] merge2(int[] num1,int m, int[] num2, int n) { int p1 = m - 1; int p2 = n - 1; int p = m + n -1; while (p1 >= 0 && p2 >= 0) { num1[p--] = num1[p1] > num2[p2] ? num1[p1--]:num2[p2--]; } System.out.println(Arrays.toString(num1)); System.arraycopy(num2, 0, num1, 0, p2 + 1); return num1; }
合并两个有序数组
最新推荐文章于 2024-07-28 19:41:52 发布