C++:数组排序(模板)
//每日心得:独上高楼,望尽天涯路
//日期:1.18
//学习内容:数组排序(模板)
//重点:函数模板
//1、模板不能够未定义就使用
//2、模板 – 泛型编程
//交换函数
#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 show(T arr[], int len)
{
for (int i = 0; i < len; ++i)
{
cout << arr[i] << " ";
}
cout << endl;
}
//字符型
void test01()
{
char charArr[] = "cdsgkhes";
//数组长度
int num = sizeof(charArr) / sizeof(char);
show(charArr, num);
mySort(charArr, num);
show(charArr, num);
}
//整数型
void test02()
{
int intArr[] = { 34,54,65,76,87 };
int num = sizeof(intArr) / sizeof(int);
show(intArr, num);
mySort(intArr, num);
show(intArr, num);
}
int main()
{
test01();
test02();
return 0;
}