华为机试题80-整型数组合并

描述

题目标题:

将两个整型数组按照升序合并,并且过滤掉重复数组元素。

输出时相邻两数之间没有空格。

输入描述:

输入说明,按下列顺序输入:
1 输入第一个数组的个数
2 输入第一个数组的数值
3 输入第二个数组的个数
4 输入第二个数组的数值

输出描述:

输出合并之后的数组

示例1

输入:

3
1 2 5
4
-1 0 3 2

输出:

-101235


这题也比较简单,用最笨的方法暴力求解,而且我只用一个数组,循环输入两次数组数据即可。

在存放新输入的整型元素之前,对比之前已经存储了的数组元素,如果和之前存储了的元素重复,则不再存储,否则进行存储。

将两组整型数据存储好后,随便用什么排序算法进行排序就行,笔者使用的是冒泡排序算法,代码如下:

#include <stdio.h>
#define    N    1000
int main()
{
    int arr[N],m,i=0,j,temp,k=2;
    while(k>0)
    {
        scanf("%d",&m);
        while(m>0)
        {
            scanf("%d",&temp);
            if(i==0)
            arr[i++]=temp;
            else
            {
                for(j=0;j<i;j++)
                {
                    if(temp==arr[j])
                        break;
                }
                if(j==i)
                    arr[i++]=temp;
            }
            m--;
        }
        k--;
    }
    m=i;
    //sort
    for(i=0;i<m-1;i++)
    {
        for(j=0;j<m-1-i;j++)
        {
            if(arr[j]>arr[j+1])
            {
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
    for(i=0;i<m;i++)
    {
        printf("%d",arr[i]);
    }
    return 0;
}