用c++写一个源代码随机输入两个有序整数序列,利用合并算法,输出合并后的整数有序序列
时间: 2024-10-09 20:14:47 浏览: 23
在C++中,你可以使用`std::vector`来存储整数序列,并通过合并函数实现两个有序序列的合并。以下是一个简单的示例,展示了如何完成这个任务:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含sort()函数
// 合并两个已排序的vector
void merge_sorted_vectors(std::vector<int>& v1, std::vector<int>& v2, std::vector<int>& result) {
size_t i = 0, j = 0, k = 0;
// 当v1和v2都有元素时
while (i < v1.size() && j < v2.size()) {
if (v1[i] <= v2[j]) {
result[k++] = v1[i++];
} else {
result[k++] = v2[j++];
}
}
// 如果其中一个向量还有剩余元素,将它们添加到结果
while (i < v1.size()) {
result[k++] = v1[i++];
}
while (j < v2.size()) {
result[k++] = v2[j++];
}
}
int main() {
std::vector<int> seq1;
std::vector<int> seq2;
// 输入第一个有序序列
std::cout << "Enter elements for sequence 1 (separated by spaces): ";
int num;
while (std::cin >> num && num != -1) {
seq1.push_back(num);
}
// 输入第二个有序序列
std::cout << "Enter elements for sequence 2 (separated by spaces and end with -1): ";
while (std::cin >> num && num != -1) {
seq2.push_back(num);
}
// 对输入的两个序列进行排序
std::sort(seq1.begin(), seq1.end());
std::sort(seq2.begin(), seq2.end());
// 创建一个新的vector来存放结果
std::vector<int> result(seq1.size() + seq2.size());
// 合并两个有序序列
merge_sorted_vectors(seq1, seq2, result);
// 输出合并后的序列
std::cout << "Sorted merged sequence: ";
for (const auto& num : result) {
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}
```