- 练习 leetcode 的题目时想在本地输出,写了如下代码,合并排序的函数时没问题的,但是输出的结果不正确,仅仅把nums1的元素进行了排序,有没有人可以指出我的问题!感谢!


#include <iostream>
#include <vector>
using namespace std;
/*
* 定义数组合并排序函数
* 定义两个指针数组,倒序遍历并插入比较后的元素
*/
vector<int> sort_array(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int len1 = m - 1, len2 = n - 1, len = m + n - 1;
while (len1 >= 0 && len2 >= 0) {
nums1[len--] = nums1[len1] > nums2[len2] ? nums1[len1--] : nums2[len2--];
}
while (len2 >= 0) {
nums1[len--] = nums2[len2--];
}
return nums1;
}
//定义数组输出函数
void print_array(vector<int>& nums1, int len) {
for (unsigned int i = 0; i < len; ++i){
cout << nums1[i] << " ";
}
}
int main() {
int m , n;
int i = 0;
vector<int> nums1(10);
vector<int> nums2(10);
cout << "nums1 = ";
do {
cin >> nums1[i];
i++;
} while (cin.get() != '\n');
cout << "m = ";
cin >> m;
cout << "nums2 = ";
do {
cin >> nums2[i];
i++;
} while (cin.get() != '\n');
cout << "n = ";
cin >> n;
int len = m + n;
sort_array(nums1, m, nums2, n);
print_array(nums1, len);
return 0;
}