当前位置:网站首页>ZZULIOJ 1124: 两个有序数组合并
ZZULIOJ 1124: 两个有序数组合并
2022-08-10 10:01:00 【安苒_】
1124: 两个有序数组合并
时间限制: 1 Sec 内存限制: 128 MB题目描述已知数组a中有m个按升序序排列的元素,数组b中有n个降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。
输入输入有两行,第一行首先是一个正整数m,然后是m个整数;第二行首先是一个正整数n,然后是n个整数,m, n均小于等于1000000。
输出输出合并后的m+n个整数,数据之间用空格隔开。输出占一行。
样例输入 Copy4 1 2 5 7 3 6 4 2样例输出 Copy7 6 5 4 2 2 1
#include <stdio.h>
#include <stdlib.h>
int a[1000000];
int b[1000000];
int c[2000000];
void merge(int*a,int m,int*b,int n);
void print(int *c,int cnt);
int cmp(const void*p1,const void*p2);
//整体思路,存放在一个新数组c中
int main()
{
int m,n;
int i,j;
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(j=0;j<n;j++)
scanf("%d",&b[j]);
merge(a,m,b,n);
qsort(c,m+n,sizeof(c[0]),cmp);
print(c,m+n);
return 0;
}
void merge(int*a,int m,int*b,int n)
{
int i=0,j=0,k=0;
while(i<m&&j<n)
{
if(a[i]>b[j]) c[k++]=a[i++];
else c[k++]=b[j++];
}
while(i<m)
{
c[k++]=a[i++];
}
while(j<n)
{
c[k++]=b[j++];
}
}
void print(int *c,int cnt)
{
int i;
for(i=0;i<cnt;i++)
{
printf("%d ",c[i]);
}
}
int cmp(const void*p1,const void*p2)
{
return *(int*)p2-*(int*)p1;
}
边栏推荐
猜你喜欢
随机推荐
Thrift -- 跨语言RPC 框架
解决问题目录
LiveNVR操作日志页面快速筛选上级国标平台的调用记录直播观看录像回看等操作
中国驻越南使馆提醒在越北部、中部地区中国公民做好台风“木兰”安全防范
jq封装树形下拉选择框组件
讯飞翻译机抢镜背后,跨语种沟通迈入全新时代
Singleton pattern base class
VBA: 采用Combox控件实现二级下拉菜单功能
杭电多校七 1008-Triangle Game(博弈)
【物联网架构】什么是物联网平台?
Fourier series and Fourier transform
武功修炼:内功
JS高级 之 使用 Iterator - Generator
腾讯云校园大使开始招募啦,内推名额和奖金等你来拿
LeetCode Algorithm 1721. 交换链表中的节点
用高质量图像标注数据加速AI商业化落地
如何理解BIO、NIO、AIO的区别
Static关键字及应用,继承的概念
「数据架构」数据模型,数据字典,数据库模式 和ERD的比较
Excel绘制统计图

![[Metaverse Omi Says] See how UCOUCO integrates performance art into the Metaverse](/img/2e/75e52bb202ae260daf23f44fa0d3e6.png)







