案例描述:
利用函数模板封装一个排序算法,可以对不同的数据类型数组进行排序。
排序规则从大到小,排序算法为选择排序。
分别用char类型数组和int类型数组进行测试。
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
// 交换的函数模板
template<typename T>
void mySwap(T& a, T& b)
{
T temp = a;
a = b;
b = temp;
}
// 利用选择排序,对数组进行从小到大的排序
template<typename T>
void mySort(T arr[], int len)
{
for (int i = 0; i < len; i++)
{
int min = i;
for (int j = i+1; j < len; j++)
{
if (arr[min] > arr[j])
{
min = j;
}
}
if (min != i)
{
// 交换min和i元素
mySwap(arr[min], arr[i]);
}
}
}
// 打印数组的模板
template<typename T>
void printArray(T arr[], int len)
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
int main(void)
{
// 测试char类型的数组
char charArray[] = "badcfe";
int size = sizeof(charArray) / sizeof(char);
mySort(charArray, size);
printArray(charArray, size);
cout << "----------" << endl;
// 测试int类型的数组
int intArray[] = { 8, 7, 6, 5, 3, 4, 2, 1, 6 };
int len = sizeof(intArray) / sizeof(int);
mySort(intArray, len);
printArray(intArray, len);
system("pause");
return 0;
}
运行截图: