函数模板案例-数组排序
#include<iostream>
using namespace std;
template<class 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 (i != min)
{
T temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
}
template<typename T>
void printArray(T arr[],int len)
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
void test01()
{
//测试char数组
char chararr[] = "adcbfeg";
//int num = sizeof(chararr) / sizeof(chararr[0]);//这里num算出来等于8,因为字符串数组最后有个结尾符(/0)
int num = strlen(chararr);
cout << "排序前: ";
printArray(chararr, num);
mySort(chararr, num);//排序算法
cout << "排序后: ";
printArray(chararr, num);
}
void test02()
{
//测试int数组
int intArr[] = {4,5,6,7,1,2,3};
int num = sizeof(intArr) / sizeof(intArr[0]);
cout << "排序前: ";
printArray(intArr, num);
mySort(intArr, num);//排序算法
cout << "排序后: ";
printArray(intArr, num);
}
int main()
{
test01();
test02();
system("pause");
return 0;
}
//int num = sizeof(chararr) / sizeof(chararr[0]);//这里num算出来等于8,因为字符串数组最后有个结尾符(/0)
int num = strlen(chararr);//采用strlen才能得到正确的字符串数组长度 7
否则会将字符串数组中的结尾符 /0 进行排序导致错误打印结果!