定义一个函数模板void sort(T *data,int num)实现冒泡排序,T为待定数据类型,data指向的内存中保存num个T类型的数,在main函数中,从键盘输入n个数,用int型指针变量p1动态申请内存n个整数,用double型指针变量p2动态申请内存n个浮点数,实现从小到大排序并输出。(
时间: 2024-03-14 21:45:00 浏览: 56
好的,下面是代码实现:
```c++
#include <iostream>
using namespace std;
template<typename T>
void sort(T *data, int num){
for(int i = 0; i < num-1; i++){
for(int j = 0; j < num-i-1; j++){
if(data[j] > data[j+1]){
T temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}
int main(){
int n;
cout << "请输入元素个数n: ";
cin >> n;
int *p1 = new int[n];
double *p2 = new double[n];
cout << "请输入" << n << "个整数: ";
for(int i = 0; i < n; i++){
cin >> p1[i];
}
cout << "排序后的整数为: ";
sort(p1, n); // 调用sort函数模板
for(int i = 0; i < n; i++){
cout << p1[i] << " ";
}
cout << endl;
cout << "请输入" << n << "个浮点数: ";
for(int i = 0; i < n; i++){
cin >> p2[i];
}
cout << "排序后的浮点数为: ";
sort(p2, n); // 调用sort函数模板
for(int i = 0; i < n; i++){
cout << p2[i] << " ";
}
cout << endl;
delete[] p1;
delete[] p2;
return 0;
}
```
这个程序中,我们定义了一个函数模板`sort`,用来实现冒泡排序。在`main`函数中,我们首先从键盘输入元素个数`n`,然后动态申请了`n`个整数和`n`个浮点数的内存,分别用指针变量`p1`和`p2`指向这些内存。接着,我们从键盘输入这些数,并调用`sort`函数模板对它们从小到大排序。最后,我们输出排序后的结果,并释放了动态申请的内存。
需要注意的是,在定义函数模板时,我们使用了`typename`关键字来指定待定数据类型`T`,并在函数参数中使用了指针类型`T*`,这样就可以实现对不同类型的数据进行排序。此外,我们还需要使用`delete[]`操作符来释放动态申请的内存,避免内存泄漏。
阅读全文