题目描述 已知数组a中有m个按升序排列的元素,数组b中有n个按降序排列的元素,

2024-12-20 10:41:33
推荐回答(1个)
回答1:

由于输入的两组数字都不是有序的

所以可以有三种方式供选择

第一种,边输入 边插入排序 代码相对简单 

第二种,分别输入 排序 再一起组合 空间复杂度高

第三种,整体输入 一并排序 这种效率最高

按第一种方式 代码如下

#include 
int a[2000000];
int main()
{
int m, n;
int i, j,t;
scanf("%d", &m);
for(i = 0; i < m; i ++)
{
scanf("%d", &t);
for(j = i-1; j >= 0; j --)
{
if(a[j] >= t) break;
a[j + 1] = a[j];
}
a[j + 1] = t;
}

scanf("%d", &n);
for(i = m; i < m+n; i ++)
{
scanf("%d", &t);
for(j = i-1; j >= 0; j --)
{
if(a[j] >= t) break;
a[j + 1] = a[j];
}
a[j + 1] = t;
}
for(i = 0; i < m+n-1; i ++)
printf("%d ", a[i]);
printf("%d\n", a[i]);
return 0;
}