【问题描述】 编写一个程序,将两个一维数组归并成一个由小到大有序的一维数组。将该数组写入二进制文件out.dat。 【输入形式】 第一行为一个整数n, 第二行为空格分隔的n个整数 第三行为另一个整数k, 第四行为空格分隔的k个整数 【输出形式】 将归并排序后的n+k个整数顺序写入二进制文件out.dat 【样例输入】 3 2 7 9 4 4 1 6 3 【样例输出】 输出1 2 3 4 6 7 9到二进制文件out.dat中。
时间: 2024-03-20 09:42:07 浏览: 51
实验六 网工231李子祥2702230109.docx
下面是一种 C++ 实现的方法:
```
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, k;
cin >> n;
vector<int> s1(n);
for (int i = 0; i < n; i++) {
cin >> s1[i];
}
cin >> k;
vector<int> s2(k);
for (int i = 0; i < k; i++) {
cin >> s2[i];
}
vector<int> s0(n + k);
merge(s1.begin(), s1.end(), s2.begin(), s2.end(), s0.begin());
ofstream out("out.dat", ios::binary);
for (int i = 0; i < n + k; i++) {
out.write((char*)&s0[i], sizeof(int));
}
out.close();
return 0;
}
```
这里使用了 STL 中的 `vector` 和 `merge` 函数,`vector` 是一个动态数组,`merge` 函数可以将两个有序的数组归并成一个有序的数组。最后使用 `ofstream` 类的 `write` 函数将结果写入二进制文件。
阅读全文