案例描述:利用函数模板封装一个排序的函数,可以对不同数据类型的数组进行排序
要求:按照从大到小的方式进行排序,并且要用选择排序的算法进行排序
用int类型的数组和char类型的数组进行测试
#include<iostream>
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 max = i;
for (int j = i + 1; j < len; j++)
{
if(arr[max]<arr[j])
{
max=j;//更新最大值
}
}
if (max != i)//交换两个数的值
{
myswap(arr[max], arr[i]);
//用模板来交换两个相同的数据类型的值
}
}
}
template<typename T>
void myprint(T arr[], int len)
{
for (int i = 0; i < len; i++)
{
cout << arr[i]<<"\t";
}
cout << endl;//当打印输出完了以后再换行
}
void test01()
{
char chararr[] = "acdbgf";
int num = sizeof(chararr) / sizeof(char);//得到字符类型数组的长度
mysort(chararr, num);
myprint(chararr, num);//使用模板来打印输出所有交换后的数据
}
void test02()
{
int intarr[] = { 1,9,7,5,80 };
int num = sizeof(intarr) / sizeof(int); // 得到整型类型数组的长度
mysort(intarr, num);
myprint(intarr, num);
}
int main(void)
{
test01();
test02();
system("pause");
return 0;
}