定义一个函数模板void sort(T *data,int num)实现冒泡排序,T为待定数据类型,data指向的内存中保存num个T类型的数,在main函数中,从键盘输入n个数,用int型指针变量p1动态申请内存n个整数,用double型指针变量p2动态申请内存n个浮点数,实现从小到大排序并输出。
时间: 2024-03-16 22:46:43 浏览: 48
好的,以下是实现冒泡排序的函数模板:
```c++
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 tmp = data[j];
data[j] = data[j + 1];
data[j + 1] = tmp;
}
}
}
}
```
然后我们可以在 `main` 函数中动态申请内存,输入数据,排序并输出:
```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 tmp = data[j];
data[j] = data[j + 1];
data[j + 1] = tmp;
}
}
}
}
int main() {
int n;
cin >> n;
int *p1 = new int[n];
for (int i = 0; i < n; i++) {
cin >> p1[i];
}
sort(p1, n);
for (int i = 0; i < n; i++) {
cout << p1[i] << " ";
}
cout << endl;
double *p2 = new double[n];
for (int i = 0; i < n; i++) {
cin >> p2[i];
}
sort(p2, n);
for (int i = 0; i < n; i++) {
cout << p2[i] << " ";
}
cout << endl;
delete[] p1;
delete[] p2;
return 0;
}
```
注意在使用完动态申请的内存后要进行释放。
阅读全文