#include<iostream>
using namespace std;
/*****************************************************************
1、 实现一个通用 对数组进行排序 *
2、规则: 从大到小 *
3、算法: 选择排序法 *
4、测试char数组、 int数组 *
*******************************************************************/
//交换的模板
template <class T>
void myswap(T&a, T& b)
{
T temp = a;
a = b;
b = temp;
}
//排序算法
template <class 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++)
{
//认定的最大值比遍历出的数值要小 说明j下标的元素才是真正的最大值
if (arr[max] < arr[j])
{
max = j; //更新最大值下表
}
}
if (max != i)
{
//交换max和i的下标
myswap(arr[max], arr[i]);
}
}
}
//打印模板
template <class T>
void printfArry(T arr[] ,int len) //打印数组
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
void test01()
{
//测试char数组
char charArr[] = "badcfe";
int num = sizeof(charArr) / sizeof(char);
mysort(charArr, num);
printfArry(charArr,num);
}
void test02()
{
//测试int数组
int arr[] = { 5,9,3,67,24,28,10,270 };
int num = sizeof(arr) / sizeof(int);
mysort(arr, num);
printfArry(arr, num);
}
int main()
{
test01();
test02();
system("pause");
return 0;
}