对71,53,46,84,213,20,16,32,52,108,66,97实现归并给出c++代码
时间: 2024-09-15 12:14:34 浏览: 28
在C++中,归并排序是一种稳定的排序算法,它通过将数组分成两半,分别排序,然后合并两个有序部分来工作。对于给定的一组整数,我们可以编写一个归并排序函数来完成这个任务。以下是使用C++实现归并排序的例子:
```cpp
#include <iostream>
#include <vector>
// 合并两个已排序的区间
void merge(std::vector<int>& arr, int left, int mid, int right) {
std::vector<int> temp(right - left + 1);
int i = left, j = mid + 1, k = 0;
while (i <= mid && j <= right) {
if (arr[i] <= arr[j]) {
temp[k++] = arr[i++];
} else {
temp[k++] = arr[j++];
}
}
// 将剩余元素添加到temp
while (i <= mid) {
temp[k++] = arr[i++];
}
while (j <= right) {
temp[k++] = arr[j++];
}
// 将临时数组的内容复制回原数组
for (int x = 0; x < temp.size(); ++x) {
arr[left + x] = temp[x];
}
}
// 归并排序函数
void mergeSort(std::vector<int>& arr, int left, int right) {
if (left < right) {
int mid = left + (right - left) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}
int main() {
std::vector<int> numbers = {71, 53, 46, 84, 213, 20, 16, 32, 52, 108, 66, 97};
int n = numbers.size();
mergeSort(numbers, 0, n - 1);
// 输出排序后的数组
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}
```
当你运行这个程序,它会按照升序对给定的数字进行排序,并打印结果。
阅读全文