关于这个问题,我是这样想的,创立第三个数组.
实现方案:
1.分别读取第一个数组的数据,再读取第二个数组的数据.然后用 i 标记第一个数组的下标,用j标记第二个数组的下标,
2.比较第一个数组中下标为i和第二个数组下标为j的元素,哪个元素较小就放入第三个数组中.以此类推,重复操作.如果碰到把第一个或者第二个中的元素遍历之后,数组一或者数组二还有其他元素(未放入数组三中).
那么就将剩下的元素依次放入到数组三中.
补充: 当然了也可以读入两个数据后,暴力的将新数组进行排序,不过这个办法有点大材小用.不推荐.
3.代码实现
int main()
{
int arr1[1000] = { 0 };
int arr2[1000] = { 0 };
int arr3[2000] = { 0 };
int n = 0;
int m = 0;
scanf("%d %d", &n, &m);
//输入
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &arr1[i]);
}
for (i = 0; i < m; i++)
{
scanf("%d", &arr2[i]);
}
i = 0;
int j = 0;
int k = 0;
while (i < n && j < m)
{
if (arr1[i] < arr2[j])
{
arr3[k] = arr1[i];
i++;
k++;
}
else
{
arr3[k] = arr2[j];
j++;
k++;
}
}
if (i == n)
{
//把arr2中的元素放到arr3
while (j < m)
{
arr3[k] = arr2[j];
j++;
k++;
}
}
else
{
while (i < n)
{
arr3[k] = arr1[i];
i++;
k++;
}
}
//输出
for (k = 0; k <m+n; k++)
{
printf("%d ", arr3[k]);
}
return 0;
}
排序
int main()
{
int n = 0, m = 0;
//输入n,m
scanf("%d %d", &n, &m);
int arr1[1000] = { 0 };
int arr2[1000] = { 0 };
int arr3[2000] = { 0 };
//输入第一个数组
for (int i = 0; i < n; i++)
{
scanf("%d", &arr1[i]);
}
//输入第二个数组
for (int i = 0; i < m; i++)
{
scanf("%d", &arr2[i]);
}
//合并数组
for (int i = 0; i < n + m; i++)
{
if (i < n)
{
arr3[i] = arr1[i];
}
arr3[i + n] = arr2[i];
}
//排序
for (int i = 0; i < n + m; i++)
{
for (int j = i + 1; j < n + m; j++)
{
int tmp = 0;
if (arr3[i] > arr3[j])
{
tmp = arr3[i];
arr3[i] = arr3[j];
arr3[j] = tmp;
}
}
}
//打印
for (int i = 0; i < n + m; i++)
{
printf("%d ", arr3[i]);
}
return 0;
}