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.完结散花
生活,就是匆忙的脚步,踏过岁月的篇章;就是点滴的欢笑,汇聚成幸福的海洋。生活,就是把握当下的美好,拥抱未来的希望。
学习,是开拓视野的窗户,是开启智慧大门的钥匙,是实现梦想的翅膀。让我们在知识的海洋里航行,不断拓展人生的版图。