数据合并
题目描述
将两个从小到大排列的一维数组 (维长分别为 m,,n , 其中 m,n≤100)仍按从小到大的排列顺序合并到一个新的一维数组中,输出新的数组.
输入描述
第 1 行一个正整数 m , 表示第一个要合并的一维数组中的元素个数
第 2 行一个正整数 n , 表示第二个要合并的一维数组中的元素个数
第 3 行输入 m 个整数 (每个数用空格分开) , 表示第一个数组元素的值.
第 4 行输入 n 个整数 (每个数用空格分开) , 表示第二个数组元素的值.
输出描述
一行,表示合并后的数据,共 m+n 个数
样例输入
3
4
1 3 5
2 4 6 8
样例输出
1 2 3 4 5 6 8
代码如下,请试一下:
#include<stdio.h>
#include<stdlib.h>
void Merge(int*array1, int size1, int* array2, int size2, int *pTemp)
{
int index1 = 0;
int index2 = 0;
int index = 0;
while (index1 < size1&&index2 < size2)//循环到其中一个数组为空,就退出循环
{
if (array1[index1] < array2[index2])//如果数组1的元素小于数组2的元素,就把数组1的元素放到新数组
pTemp[index++] = array1[index1++];
else
pTemp[index++] = array2[index2++];//否则就把数组2的元素放到新数组
}
while (index1 < size1)//退出循环后,如果数组1的元素未空,就把数组1的元素都放到新数组中,因为数组1是有序的,所以不用排序
{
pTemp[index++] = array1[index1++];
}
while (index2 < size2)//退出循环后,如果数组2的元素未空,就把数组2的元素都放到新数组中,因为数组2是有序的,所以不用排序
{
pTemp[index++] = array2[index2++];
}
}
int main()
{
int *a, *b, *c, i, n, m;
scanf("%d%d", &m, &n);
c = (int*)malloc(sizeof(int)*(m + n));
a = (int*)malloc(sizeof(int)*(m));
b = (int*)malloc(sizeof(int)*(n));
for (i = 0; i < m; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < n; i++)
{
scanf("%d", &b[i]);
}
Merge(a, m, b, n, c);
for (i = 0; i < m+n; i++)
{
printf("%d ", c[i]);
}
free(a);
free(b);
free(c);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int m=0;
int n=0;
int num=0;
int q=0;
int a[100];
int b[100];
int c[200];
int i=0;
int j=0;
///////////////初始化0
for( i=0;i<100;i++)
{
a[i]=0;
b[i]=0;
}
for( i=0;i<200;i++)
{
c[i]=0;
}
////////////输入元素
cout << "元素个数:" << endl;
cin >> m;
cout << "元素个数:" << endl;
cin >> n;
num=m+n;
for(i=0;i<m;i++)
{
cin>>a[i];
}
for(j=0;j<n;j++)
{
cin>>b[j];
}
////////////a[i]和b[i]联合为c[i]
for(i=0;i<m;i++)
{
c[i]=a[i];
}
for(i=0;i<n;i++)
{
c[m+i]=b[i];
}
////////////////排序
for(i=0;i<num;i++)
{
for(j=i+1;j<num;j++)
{
if(c[i]<=c[j])
{
c[i]=c[i];
}
else
{
q=c[i];
c[i]=c[j];
c[j]=q;
}
}
}
////////////////////////////输出元素
for(i=0;i<num;i++)
{
cout<<c[i]<<" ";
}
return 0;
}
我不是回答过你了么
https://ask.csdn.net/questions/1064304
如果有问题可以追问。你再发一个一样的问题,还是不知道是你什么地方不理解还是我什么地方没有写对