梅宇轩
(布拉布拉)
1
9. 合并有序数组
题目ID:1206100分
时间限制: 200ms
空间限制: 524288kB
题目描述
Time Limit:1s Memory Limit: 256M
Description:
假设有两个非递增序列 A 与 B ,要求将它们合并为一个非递增序列 C 。
(不可使用任何排序算法完成)
Input:
第一行输入第一个非递增序列,以-1结尾。
第二行输入第二个非递增序列,以-1结尾。
Output:
输出合并后的非递增序列
Sample input:
8 5 4 -1
7 6 3 1 -1
Sample output:
8 7 6 5 4 3 1
约束: 每个序列中元素个数最多不超过100000 ,所有数字都在带符号的 32 位整数范围内(signed 32-bit integers)。
1 个赞
梅宇轩
(布拉布拉)
4
1 个赞
张乐凡
(string dp[100005])
12
新建指针变量i1
和i2
,当a[i1]>b[i2]
时输出i1
并自增,否则输出i2
并自增.直到i1
等于a
的长度与i2
等于b
的长度
1 个赞
楼逸杨
(楼逸杨)
14
cmp部分
int cmp(int a,int b){ //比大小函数
return a>b; //从大到小
}
核心代码
while(scanf("%d",&a[i])){ //输入a
if(a[i]==-1)
break;
i++;
}
while(scanf("%d",&a[i])){ //将输入的第二个数组加到a后面
if(a[i]==-1)
break;
i++;
}
sort(a,a+i,cmp); //库函数sort进行从大到小排序
for(int j=0;j<(i-1);j++) //遍历输出
cout<<a[j]<<" ";
AC给解决方案
1 个赞
张乐凡
(string dp[100005])
16
我表达不清晰,应该是到i1
等于a
的长度或i2
等于b
的长度,再输出剩下的
2 个赞