1 //函数模板案列 2 //利用函数模板封装一给排序的函数,对不同的数据类型进行排序 3 //排序规则从大到小 排序算法为选择排序 4 //分别用char 数组 和 int 数组进行测试 5 6 7 #include <iostream> 8 #include <string> 9 #include<fstream> 10 using namespace std; 11 //交换函数模板 12 template<typename T> 13 void mySwap(T& a, T& b) 14 { 15 T temp = a; 16 a = b; 17 b = temp; 18 } 19 20 21 //排序算法 22 template<typename T> 23 void mySort(T arr[],int len) 24 { 25 for (int i = 0; i < len ; i++) 26 { 27 int max = i; //认定最大值的下标 28 for (int j = i + 1; j < len; j++) 29 { 30 //认定的最大值 比 遍历出的数值 要小 31 //说明J 下标的元素才是真正的最大值 32 if (arr[max]< arr[j]) 33 { 34 max = j; //更新最大值下标 35 } 36 37 } 38 if (max != i) 39 { 40 //交换max和i元素 41 mySwap(arr[max], arr[i]); 42 } 43 } 44 } 45 //提供打印数组的模板 46 template <typename T> 47 void printArray(T arr[], int len) 48 { 49 for (int i = 0; i < len; i++) 50 { 51 cout << arr[i] << " "; 52 53 } 54 cout << endl; 55 } 56 void test01() 57 { 58 //测试char数组 59 char charArr[] = "badcfe"; 60 int num = sizeof(charArr)/sizeof(char); 61 mySort(charArr, num); 62 printArray(charArr, num); 63 64 } 65 void test02() 66 { 67 int intArr[] = { 1,5,22,3,6325,546,911,2222222,13 }; 68 int num = sizeof(intArr) / sizeof(int); 69 mySort(intArr, num); 70 printArray(intArr, num); 71 } 72 73 int main() 74 { 75 76 test01(); 77 test02(); 78 79 system("pause"); 80 81 return 0; 82 83 }