以函数模板方式实现对有n个元素的数组按升序进行冒泡排序用c++,可以实现用户自由输入整形或浮点型
时间: 2025-06-09 13:03:43 浏览: 12
在C++中,你可以使用函数模板来实现一个通用的冒泡排序算法,该算法可以接受不同类型的数据,如整数或浮点数。以下是简单的实现:
```cpp
#include <iostream>
// 函数模板,用于对任意类型的数组进行升序冒泡排序
template<typename T>
void bubbleSort(T arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - 1 - i; ++j) {
if (arr[j] > arr[j + 1]) {
// 使用类型转换确保比较操作的正确性
std::swap(arr[j], arr[j + 1]);
}
}
}
}
// 主函数,获取用户输入并调用排序函数
int main() {
int n;
std::cout << "Enter the number of elements: ";
std::cin >> n;
// 用户输入数据类型
std::cout << "Enter data as integers or floating points: ";
typename std::basic_type_info<T>::name(); // 获取用户输入数据类型
T input[n];
for (int i = 0; i < n; ++i) {
std::cin >> input[i];
}
bubbleSort(input, n);
std::cout << "Sorted array: ";
for (int i = 0; i < n; ++i) {
std::cout << input[i] << " ";
}
return 0;
}
```
在这个例子中,`bubbleSort`函数模板接收一个数组和它的大小作为参数,然后通过类型推断确定如何处理不同类型的数据。用户需要在主函数中指定输入的数据类型,并读取用户输入。
阅读全文