换成c++语言
时间: 2023-07-23 22:12:11 浏览: 42
以下是一份C++实现的代码:
```c++
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
// 定义归并排序函数
vector<int> merge_sort(vector<int>& arr) {
if (arr.size() <= 1) {
return arr;
}
int mid = arr.size() / 2;
vector<int> left(arr.begin(), arr.begin() + mid);
vector<int> right(arr.begin() + mid, arr.end());
left = merge_sort(left);
right = merge_sort(right);
return merge(left, right);
}
// 定义归并函数
vector<int> merge(vector<int>& left, vector<int>& right) {
int i = 0, j = 0;
vector<int> res;
while (i < left.size() && j < right.size()) {
if (left[i] < right[j]) {
res.push_back(left[i]);
i++;
}
else {
res.push_back(right[j]);
j++;
}
}
while (i < left.size()) {
res.push_back(left[i]);
i++;
}
while (j < right.size()) {
res.push_back(right[j]);
j++;
}
return res;
}
int main() {
// 读取数据
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
// 对序列进行归并排序
vector<int> res = merge_sort(arr);
// 输出结果
cout << res.size() << endl;
queue<vector<int>> q;
q.push(res);
while (!q.empty()) {
vector<int> node = q.front();
q.pop();
for (int i = 0; i < node.size(); i++) {
cout << node[i] << " ";
}
cout << endl;
if (node.size() > 1) {
int mid = node.size() / 2;
vector<int> left(node.begin(), node.begin() + mid);
vector<int> right(node.begin() + mid, node.end());
q.push(left);
q.push(right);
}
}
return 0;
}
```
在C++代码中,同样先定义了归并排序和归并函数。在主程序中,首先读入数据,然后对序列进行归并排序,得到排序后的结果。接着,输出二路归并排序树的结点个数,以及按照二路归并排序树的结构,自下而上自左向右的次序,输出每个有序的子序列。在输出过程中,使用队列来存储每个子序列的数据,按照二路归并排序树的结构进行输出。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)