编写一个函数模板,使用冒泡排序将数组内容由 小到大排序。使得函数调用时,数组的类型可以 是整型也可以是双精度型
时间: 2024-05-12 16:19:09 浏览: 12
```cpp
template<typename T>
void bubbleSort(T arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
T temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
使用示例:
```cpp
int intArr[] = { 2, 5, 1, 7, 3 };
double doubleArr[] = { 3.2, 1.5, 2.7, 4.1, 0.8 };
bubbleSort(intArr, 5);
bubbleSort(doubleArr, 5);
```
相关问题
8.18编写一个函数模板,使用冒泡排序将数组内容由小到大排列并打印出来,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整数也可以是双精度型
下面是使用冒泡排序将数组由小到大排列并打印出来的函数模板及其调用程序:
```c++
#include<iostream>
using namespace std;
template<typename T>
void bubble_sort(T arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
T temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr1[] = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3 };
double arr2[] = { 3.14, 1.41, 2.72, 1.61, 0.58, 0.62 };
int n1 = sizeof(arr1) / sizeof(arr1[0]);
int n2 = sizeof(arr2) / sizeof(arr2[0]);
bubble_sort(arr1, n1);
bubble_sort(arr2, n2);
for (int i = 0; i < n1; ++i) {
cout << arr1[i] << ' ';
}
cout << endl;
for (int i = 0; i < n2; ++i) {
cout << arr2[i] << ' ';
}
cout << endl;
return 0;
}
```
函数模板中的参数类型是 `typename T`,意味着可以传入任意类型的数组,如整型数组、双精度型数组等。在主函数中,我们分别定义了一个整型数组 `arr1` 和一个双精度型数组 `arr2`,并调用了 `bubble_sort` 函数模板对它们进行排序。排序后,我们分别输出了两个数组的内容。
编写一个函数模板.使用冒泡排序将数组内容由小到大排列并打印出来,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度型。写出这段代码
好的,下面是代码:
```c++
#include <iostream>
using namespace std;
// 冒泡排序函数模板
template <typename T>
void bubbleSort(T arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j+1]) {
T temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int arr1[] = {4, 2, 6, 3, 1, 5};
double arr2[] = {3.14, 1.68, 2.71, 0.618, 1.41};
// 调用函数模板,对数组进行排序并打印出来
int n1 = sizeof(arr1) / sizeof(arr1[0]);
bubbleSort(arr1, n1);
cout << "排序后的整型数组为:";
for (int i = 0; i < n1; i++) {
cout << arr1[i] << " ";
}
cout << endl;
int n2 = sizeof(arr2) / sizeof(arr2[0]);
bubbleSort(arr2, n2);
cout << "排序后的双精度型数组为:";
for (int i = 0; i < n2; i++) {
cout << arr2[i] << " ";
}
cout << endl;
return 0;
}
```
这里定义了一个函数模板 `bubbleSort`,使用冒泡排序算法对传入的数组进行排序。使用 `typename` 关键字来声明类型参数,使得函数模板可以处理不同类型的数组。
在 `main()` 函数中,我们分别定义了一个整型数组和一个双精度型数组,然后调用 `bubbleSort` 函数模板对它们进行排序,并打印出排序后的结果。