牛客网中有这样一道题
分析题干,要求我们的是第一行的第一个数字输入第二行的数列的数字个数, 第二个数字输入第三行的数列的数字个数,且第二行和第三行的数列都是升序排列的。要求我们输出一行长度为n+m的升序数列,将第二行和第三行的数列重新排列并升序组合。
接下来就来分步来解决这个问题吧!!
1⃣️首先要定义m和n,分别用于输入第二行和第三行的数字的个数,再定义一个数组,用于输出一个升序数列,再定义一个变量flag,用于第二行和第三行的交换排列,即实现数组交换。
2⃣️利用scanf函数 进行输入,即输出第二行和第三行的数字个数
3⃣️接下来定义一个变量i,进行第二和第三行升序数列的输入,这样直接把两个数组中的数据,接收到一个数组中,我们可以写成:
4⃣️在3⃣️的基础上,我们再定义一个变量j,用于进行第三行升序数列的输入,并进行数组交换,这里的j就要 < m + n - i,因为总共只有m + n。arr[j]和arr[j+1]是arr数组中两个不同的元素,这里判断如果j下标的元素大于j + 1,就他俩实现交换,使得他们是升序,借助flag这个临时变量,先把arr[j]的值存到flag中,这样flag和arr[j]是相同的,再将arr[j + 1]赋值给arr[j],这时arr[j]的值已经是arr[j + 1]了,那么原来arr[j]的值在flag,所以将flag的值赋值给了arr[j + 1],这样就实现了交换,我们通常叫做"冒泡排序" ,所以我们可以写成:
5⃣️处理完这些后,我们就基本完成了这个题目的主要部分,接下来就是打印输出后到结果,这个就很简单啦:
整个题目的思路就在上方完整的解释完毕,接下来看一下完整的代码吧!
OK,本次的题目就到此为止,咱们下期见!!