编写冒泡排序的函数模板,并进行测试
时间: 2023-10-25 15:06:35 浏览: 139
好的,这是编写冒泡排序的函数模板的示例代码:
```
template <typename T>
void bubleSort(T arr[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 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 arr[] = { 5, 2, 9, 3, 6 };
int size = sizeof(arr) / sizeof(arr[0]);
bubleSort(arr, size);
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
return 0;
}
```
输出应为:2 3 5 6 9
相关问题
编写冒泡排序的函数模板
### 回答1:
好的,以下是冒泡排序的函数模板:
```cpp
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;
}
}
}
}
```
其中,模板类型参数 `T` 表示待排序数组元素的类型,参数 `arr` 表示待排序数组的首地址,参数 `n` 表示待排序数组的长度。函数中使用两层循环,每次比较相邻的两个元素,若顺序不对则交换它们的位置,直到所有元素都被排序。
### 回答2:
冒泡排序是一种简单直观的排序算法,它重复地走访过要排序的元素,依次比较相邻的两个元素,如果顺序不对就交换它们。
首先,我们可以编写一个函数模板来实现冒泡排序:
```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])
{
// 交换arr[j]和arr[j+1]
T temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
```
这里的函数模板可以接受不同类型的数组进行排序。函数的参数是一个数组`arr`和数组的长度`n`。在函数内部,我们使用两个嵌套的循环来遍历数组并比较相邻元素的大小。如果前一个元素比后一个元素大,则交换它们的位置。通过这样的循环操作,最大的元素会移动到数组的末尾。然后,我们继续进行下一轮的循环,对剩下的元素进行同样的比较和交换操作,直到整个数组排序完成。
使用这个函数模板,你可以将任何类型的数组传递进去进行排序。比如,你可以这样调用函数来对一个整数数组进行排序:
```cpp
int main()
{
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
return 0;
}
```
通过编写这样的冒泡排序的函数模板,我们可以实现对不同类型的数组进行排序,提高了代码的复用性,使得程序更加灵活和易于拓展。
### 回答3:
冒泡排序是一种简单但效率较低的排序算法,其思想是通过遍历数组中的相邻元素,比较它们的大小,并按照升序或降序交换位置。下面是一个用于编写冒泡排序的函数模板:
```cpp
template <typename T>
void bubbleSort(T arr[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
// 如果当前元素大于下一个元素,则交换它们的位置
if (arr[j] > arr[j + 1]) {
T temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
该函数模板使用了模板参数 T,允许对任何类型的数组进行排序。函数接受两个参数,第一个参数 arr 是待排序的数组,第二个参数 size 是数组的大小。
在冒泡排序算法中,通过两个嵌套的循环遍历数组,并比较相邻的元素。如果当前元素大于下一个元素,则交换它们的位置。这样,每一轮循环都会将最大(或最小)的元素移动到数组的末尾。
最终,数组将按照升序(或降序)排列。
使用该函数模板,可以很方便地对各种类型的数组进行冒泡排序。例如,可以将一个整型数组和一个浮点型数组传递给该函数模板,它们都可以被正确地排序。
编写冒泡排序的函数模板,并进行测(C++)
好的,下面是冒泡排序的函数模板:
```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;
}
}
}
}
```
这里使用了模板,可以对不同类型的数组进行排序。函数中传入了一个数组 `arr` 和数组的长度 `n`,函数会将数组进行升序排序。
接下来,我们可以进行简单的测试:
```cpp
#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[] = {9, 5, 6, 7, 3, 2, 8, 1, 4};
int n1 = sizeof(arr1) / sizeof(int);
bubbleSort(arr1, n1);
for (int i = 0; i < n1; i++) {
cout << arr1[i] << " ";
}
cout << endl;
double arr2[] = {9.2, 5.5, 6.1, 7.8, 3.3, 2.4, 8.7, 1.0, 4.9};
int n2 = sizeof(arr2) / sizeof(double);
bubbleSort(arr2, n2);
for (int i = 0; i < n2; i++) {
cout << arr2[i] << " ";
}
cout << endl;
return 0;
}
```
这里分别对一个 `int` 类型的数组和一个 `double` 类型的数组进行排序,并输出排序后的结果。
阅读全文