设计一个从键盘上任意输入n个乱序的整数,同时在主函数中输出冒泡排序前后的序列结果的C++模板
时间: 2024-09-29 08:09:55 浏览: 34
为了设计一个C++程序,可以从键盘上接收用户输入的n个乱序整数,并使用上述的冒泡排序模板对其进行排序,最后输出排序前后的情况,我们可以按照以下步骤进行:
首先,我们需要包括必要的头文件并定义模板函数,然后在主函数里获取用户的输入,调用模板函数进行排序,并打印排序前后的结果。
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含std::sort和std::swap
// 冒泡排序模板函数
template <typename T>
void bubbleSort(std::vector<T>& nums) {
int n = nums.size();
bool swapped;
for (int i = 0; i < n - 1; ++i) {
swapped = false;
for (int j = 0; j < n - 1 - i; ++j) {
if (nums[j] > nums[j + 1]) {
std::swap(nums[j], nums[j + 1]);
swapped = true;
}
}
if (!swapped) break; // 如果一轮没有发生交换,说明已经有序,无需继续
}
}
int main() {
int n;
std::cout << "请输入数字个数: ";
std::cin >> n;
std::vector<int> inputNumbers(n); // 创建一个动态数组来存储输入的整数
std::cout << "请输入" << n << "个整数(按顺序): ";
for (int i = 0; i < n; ++i) {
std::cin >> inputNumbers[i];
}
// 打印原始输入
std::cout << "原始序列: ";
for (const auto& num : inputNumbers) {
std::cout << num << " ";
}
std::cout << "\n";
// 对输入的数列进行排序
bubbleSort(inputNumbers);
// 打印排序后的序列
std::cout << "排序后的序列: ";
for (const auto& num : inputNumbers) {
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}
```
在这个程序中,我们使用了`std::vector`来方便地存储和操作动态大小的整数序列,`std::sort`函数则提供了一个快速且直接的排序方法作为对比。
阅读全文