合并两个数组

【题目】有两个排序的数组A1和A2,内存在A1的末尾有足够的空余空间容纳A2。请实现一个函数,把A2中所有数字插入到A1中,并且所有的数字是排序的。

 

1. 从后往前比较A1和A2中的数字,并把较大的数字复制到A1的合适位置。

 1 public class Main {
 2 
 3     public static void main(String[] args) {
 4 
 5         int[] arr1 = new int[100];
 6         arr1[0] = 1;
 7         arr1[1] = 3;
 8         arr1[2] = 4;
 9         arr1[3] = 7;
10         arr1[4] = 9;
11         arr1[5] = 10;
12         arr1[6] = 23;
13         arr1[7] = 67;
14         int[] arr2 = { 4, 6, 8, 10, 22, 24, 26, 34, 37 };
15 
16         Main main = new Main();
17         int[] result = main.process(arr1, arr2);
18 
19         if (null != result) {
20             for (int i = 0; i < (8 + arr2.length); i++) {
21                 System.out.print(result[i] + " ");
22             }
23         }
24     }
25 
26     public int[] process(int[] arr1, int[] arr2) {
27 
28         if (null == arr1 || null == arr2
29                 || (0 == arr1.length && 0 == arr2.length)) {
30             return null;
31         }
32 
33         if (0 == arr1.length && 0 != arr2.length) {
34             return arr2;
35         }
36 
37         if (0 != arr1.length && 0 == arr2.length) {
38             return arr1;
39         }
40 
41         // 求arr1中非0的元素个数
42         int index = 0;
43         for (int i = 0; i < arr1.length; i++) {
44             if (0 == arr1[i]) {
45                 index = i;
46                 break;
47             }
48         }
49 
50         int p1 = index - 1; // arr1末尾指针
51         int p2 = arr2.length - 1; // arr2末尾指针
52         int p = index + arr2.length - 1; // arr3末尾指针
53 
54         // 从后往前遍历arr1和arr2中的元素,并从后往前赋值到arr1中
55         while (p1 >= 0 && p2 >= 0) {
56             if (arr1[p1] >= arr2[p2]) {
57                 arr1[p--] = arr1[p1--];
58             } else {
59                 arr1[p--] = arr2[p2--];
60             }
61         }
62 
63         while (p1 >= 0) {
64             arr1[p--] = arr1[p1--];
65         }
66 
67         while (p2 >= 0) {
68             arr1[p--] = arr2[p2--];
69         }
70 
71         return arr1;
72     }
73 }

 

posted @ 2017-12-02 19:56  Mr.van_Gogh  阅读(170)  评论(0编辑  收藏  举报