写出这个代码 使用C++
时间: 2024-03-13 22:46:32 浏览: 76
好的,以下是使用C++实现的归并排序代码,包括了归并排序的递归函数和合并函数:
```cpp
#include <iostream>
#include <vector>
using namespace std;
void Merge(vector<int>& nums, int low, int m, int high) {
vector<int> temp(high - low + 1);
int i = low, j = m + 1, k = 0;
while (i <= m && j <= high) {
if (nums[i] <= nums[j]) {
temp[k++] = nums[i++];
} else {
temp[k++] = nums[j++];
}
}
while (i <= m) {
temp[k++] = nums[i++];
}
while (j <= high) {
temp[k++] = nums[j++];
}
for (i = low, k = 0; i <= high; ++i, ++k) {
nums[i] = temp[k];
}
}
void MergeSort(vector<int>& nums, int low, int high) {
if (low < high) {
int m = low + (high - low) / 2;
MergeSort(nums, low, m);
MergeSort(nums, m + 1, high);
Merge(nums, low, m, high);
}
}
int main() {
vector<int> nums = { 3, 5, 2, 6, 8, 1, 0, 4 };
MergeSort(nums, 0, nums.size() - 1);
for (int num : nums) {
cout << num << " ";
}
return 0;
}
```
在这个例子中,我们使用了std::vector来实现一个动态数组,方便存储和操作待排序的元素。MergeSort函数是归并排序的递归函数,Merge函数实现了合并两个有序子序列的操作。在main函数中,我们初始化一个包含8个元素的数组,调用MergeSort函数进行排序,最后输出排序后的结果。
阅读全文