#include <iostream>
/*写两个函数模板:
1.用来排序一个数组
2.用来打印数组
3.求数组的最大值
*/
using namespace std;
//模板的实例化是在程序运行使用到的视乎才会生成
//二进制代码
template <class A>
void mysort(A a[],int len)
{
while(len !=0)
{
for(int i = 0;i<len;i++)
if(a[i] <= a[i+1])
{
//交换
A temp = a[i+1];
a[i+1] = a[i];
a[i] = temp;
}
len--;
}
}
template <typename B>
void mymax(B a[],int len ,B *ret)
{
*ret = a[0];
for(int i = 1;i<len;i++)
{
if(*ret > a[i]) //只有当ret的值比a[i]继续遍历比较
{
}
else {
*ret = a[i];//否则将大的值赋值给ret,ret总是在已经遍历过的值中是最大的
}
}
}
template <class T>
//插入排序 以a[i] i 从1开始,依次与它前面的比较,若有比它大的就转换过来
void mysortA(T a[],int len)
{
for(int i=1;i<len;i++)
{
for(int j=0;j<i;j++)
{
if(a[i] < a[j])
{
T temp = a[i];
a[i] = a[j];
a[j] = temp; //
}
}
}
}
template <class B>
void myprinT(B a[],int len)
{
for(int i = 0;i<len;i++)
cout << a[i] <<" " ;
cout << endl;
}
int main()
{
double a[7] = {2.5,6.8,10.9,3.1,5.32,6.99,9.65};
myprinT(a,7);
//mysort(a,7);
myprinT(a,7);
double max;
mymax(a,7,&max);
cout << "mymax = " <<max <<endl;
//mysort(a,5);
//myprinT(a,6);
// int max;
// mymax(a,7,&max);
// cout << "mymax = " <<max <<endl;
return 0;
}
类模板对数组排序,以擂台的方式求最大值
最新推荐文章于 2022-07-29 14:54:22 发布