华为机试题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;
}