1 #include <stdio.h>
2 /*
3 题目:1.合并两个有序数组到第三个中去,并使其依然保持有序 2.删除重复的元素
4 思路:a.分别测出二个数组的长度,将两个数组的长度之和作为第三个数组的长度
5 b.比较二个数组元素的大小,小的放入第三个数组,直至某一个数组为空,将另外一个不为空的数组剩下的元素追加到第三个数组
6 后面即可
7 c.删除重复的元素。另外定义一个数组,长度<=当前数组,但是不知道具体有几个重复的元素,所以长度设置成原数组的长度。
8 d.原数组的第一个元素不用比较,直接放进第二个数组中的第一个元素中。原数组的第二个元素和第一个元素如果相同,不用放入第二个数组
9 如果不同放入第二个数组
10 */
11 #define M 4
12 #define N 6
13 int main(void)
14 {
15 int a[M] = {1,2,3,4};
16 int b[N] = {2,3,5,6,7,8};
17
18 int c[M+N],i,j,k;
19 i = j = k = 0;
20
21 while(i<M&&j<N)//如果一个数组为空就退出循环
22 {
23 if(a[i]<=b[j])
24 c[k++] = a[i++];
25 else
26 c[k++] = b[j++];
27 }
28 while(i<M)//a数组不为空
29 c[k++] = a[i++];
30 while(j<N)//b数组不为空
31 c[k++] = b[j++];
32 for(k = 0;k<M+N;k++)
33 {
34 printf("%d\t",c[k]);
35 }
36 putchar(10);
37
38 printf("--------------删除重复的元素----------------\n");
39 int d[M+N];
40
41 d[0] = c[0];//第一个元素直接放入第二个数组
42 i = 1,j = 1;
43 while(i<M+N)
44 {
45 if(c[i] != c[i-1])
46 {
47 d[j++] = c[i];//如果不同放入第二个数组。
48 }
49 i++;
50 }
51
52 for(i = 0;i<j;i++)
53 {
54 printf("%d\t",d[i]);
55 }
56 putchar(10);
57 return 0;
58 }