两个有序数组 A1 A2 的合并
/** * 问题6、有序数组 A1 A2 的合并 */ @Test public void orderArrayMerge() { // 两个有序数组 A1 A2 的合并 int[] A1 = {1, 5, 7, 8, 9, 12, 20, 39, 0, 0, 0, 0, 0, 0, 0}; int[] A2 = {3, 5, 7, 13, 15, 23, 45}; int A1A2Index = A1.length - 1; int A1Rear = A1.length - A2.length - 1; int A2Rear = A2.length - 1; while (A2Rear >= 0 && A1Rear >= 0) { if (A2[A2Rear] > A1[A1Rear]) { // 要插入的数据 可以直接插入 A1[A1A2Index] = A2[A2Rear]; A2Rear--; } else { // 要插入的数据 需要往前插入 A1[A1A2Index] = A1[A1Rear]; A1Rear--; } A1A2Index--; } for (int num : A1) { System.out.println(num); } // 总结 需要挪动数据的插入 要从后往前插入 时间复杂度0(n) }
解决问题的方法要考虑性能,尽可能找到性能最佳的解决方法;