你知道C语言中实现有序序列并序输出的2种方法吗?

简介: 你知道C语言中实现有序序列并序输出的2种方法吗?

1.题目描述


描述:输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。

数据范围: 1 \le n, m \le 1000 \1≤n,m≤1000  , 序列中的值满足 0 \le val \le 30000 \0≤val≤30000

输入描述:输入包含三行,

第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。

第二行包含n个整数,用空格分隔。

第三行包含m个整数,用空格分隔。

输出描述:输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。


示例:输入:

5 6

1 3 7 9 22

2 8 10 17 33 44


复制输出:

1 2 3 7 8 9 10 17 22 33 44


2.题解法一


1.题目分析


1.1定义三个数组


当我们看到这个题目的时候第一反应可能是定义3个数组,然后将2个数组合并后放入第三个数组中。是的,这时我们只要解决2个数组的有序合并就能够将题目做出来了~


1.2实现有序合并


那我们如何实现俩个数的有序合并呢?


首先我们知道前面2个数组是存放了数值的有序数列 ,而第三个数组是没有存放数值的。


那我们是不是可以将2个数组中的值比较大小,然后按从小到大的顺序放进第三个数组中。


那我们用什么方法比较呢?

我们可以将2个数组中的第一个元素先进行比较,小的放进3数组。然后我们要用减少数组中的第二个元素继续与另一数组的第一元素进行比较,然后往复下去~


什么~   没关系,下面我用画图的方式展示一下


2.代码实现


注意!当我们完成这一步骤的时候,数组1 或数组2中只有其中一个数组中有遗漏的元素还没有放入3数组中


3.题解法二


1.题目分析


1.1定义一个数组


那我们可不可以用一个数组将它们进行排序呢~当然可以!(因为题目也没有要求嘛~)


1.2如何排序呢


这时候我们的思路就很清晰了,我们按题目要求在屏幕上输入数据,定义一个数组~

然后,我们只要在这一个数组中将他们进行排序就可以了~

我们可以用打擂台的办法进行排序~


1.我们假设数组中的第一个元素为最小值

2.我们将其与他后面的元素一一比较,找到比它小的就将他们交换(这时第一个元素是不是数组中最小的元素了呢~)

3.然后我们在将第二个元素与其后面的元素进行比较交换(进行n-1次循环我们就将元素排好序了)


2.代码实现


输入


4.完结散花


生活,就是匆忙的脚步,踏过岁月的篇章;就是点滴的欢笑,汇聚成幸福的海洋。生活,就是把握当下的美好,拥抱未来的希望。


学习,是开拓视野的窗户,是开启智慧大门的钥匙,是实现梦想的翅膀。让我们在知识的海洋里航行,不断拓展人生的版图。

相关文章
|
1月前
|
C语言
【C语言】大小写字母的相互转化:多种方法解析及原理说明
【C语言】大小写字母的相互转化:多种方法解析及原理说明
110 0
|
4月前
|
C语言
c语言编程练习题:7-52 求简单交错序列前N项和
c语言编程练习题:7-52 求简单交错序列前N项和
28 0
|
28天前
|
编译器 C语言
【C语言】字母转换大小写的三种方法
【C语言】字母转换大小写的三种方法
45 0
|
1月前
|
存储 C语言 索引
C语言数组求和方法
C语言数组求和方法
55 0
|
3月前
|
C语言
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
25 0
|
3月前
|
存储 移动开发 搜索推荐
利用C语言实现十大经典排序算法的方法
利用C语言实现十大经典排序算法的方法
26 1
|
4月前
|
C语言
C语言第四十八弹---多种方法模拟实现strlen函数
C语言第四十八弹---多种方法模拟实现strlen函数
|
4月前
|
C语言
C语言第四十六弹---最快方法找到杨氏矩阵中的数下标
C语言第四十六弹---最快方法找到杨氏矩阵中的数下标
|
4月前
|
C语言
C语言第四十二弹---使用多种方法实现字符串左旋转
C语言第四十二弹---使用多种方法实现字符串左旋转
|
4月前
|
算法 C语言
C语言第三十六弹--实现转移表的多种方法
C语言第三十六弹--实现转移表的多种方法