题意为给定两个排好序的数组num1和num2,使用归并排序的思想将这两个数组合为一个有序数组
题目中给出的提示信息,num1的size大于或等于m + n,十分有用,可以将num2中的元素归并到num1中
可以从后面开始考虑,即先考虑2个数组中最大的值,并放在下标m+n-1位处,然后向前以此类推
注意,需要两个变量index_1和index_2来记录下一步待比较的num1和num2数组元素的下标,给出比较部分的代码:
while(index_1 >= 0 && index_2 >= 0)
{
if(nums1[index_1] >= nums2[index_2])
{
nums1[index] = nums1[index_1];
index--;
index_1--;
}
else
{
nums1[index] = nums2[index_2];
index--;
index_2--;
}
}
注意,若以上部分执行完毕后,num2中仍有元素未参与比较(即为值最小的几个元素),需要执行:
while(index_2 >= 0)
{
nums1[index] = nums2[index_2];
index--;
index_2--;
}
若num1中的元素未比较完,则保持原下标不变即可,不需要执行另外的操作