总阅读量次
问题描述
编写函数,将两个有序 vector 数组合并成一个新的有序 vector数组,函数原型为:
1 | vector<int> merg(vector<int> list1,vector<int> list2); |
问题分析
第一步
将问题分解为两类处理方式:
两个有序数组是否都是不空;
两个有序数组的自身排列方式是升序还是降序;
第二步
在函数内先默认两个数组都为升序排列(包括数组为空,数组所有元素都相同两种情况)
第三步
把每种情况分别进行处理返回处理后的数组即可
设定这样的处理方式:
两个数组都为升序或者降序时,返回升序或者降序合并后的数组;
两个数组排列方式不同时(即一个为升序,一个为降序),返回降序排列后的数组;
有一个数组为空时,按照不为空的数组排列方式返回;
两个数组都为空时,输出“至少有一个数组不空”提示语句,返回一个空数组;
源代码
注:这里有很多代码十分冗余,只是为了满足题设,读者可改进为更简洁的执行方式
1 | vector<int> merg(vector<int> list1,vector<int> list2){ |
测试样例
(这里测试数组在主函数给出方便测试,故没有显示输入)
两个数组均为空有一个数组为空
两个都为升序
两个都为降序
一个为升序一个为降序