c++中用模板函数写冒泡算法,对int,double,char三种数据类型的数据排序(要排在一起)

c++中用模板函数写冒泡算法,对int,double,char三种数据类型的数据排序(要排在一起)。

第1个回答  2013-12-03
#include<iostream.h>
template <class type,class type1,class type2>
void rote(type a,type1 b,type2 c)
{
double max,min,mid;
if(a>b)
{
max=1;min=2;
}
else
{
max=2;min=1;
}
if(c>max)
{
mid=max;
max=3;
}
else if(c<min)
{
mid=min;
min=3;
}
else
{
mid=3;
}
int k[3]={max,mid,min};
for(int i=0;i<3;i++)
{
switch(k[i])
{
case 1: {cout<<a<<" ";break;}
case 2:{ cout<<b<<" ";break;}
case 3:{ cout<<c<<" ";break;}
}
}
cout<<endl;

}
void main()
{
int a=10;char b='e';double c=2.1;
rote(b,a,c);
}
第2个回答  2013-12-03
template<class T>
void MSort(T* array, int n)
{
int i, j;
T temp;
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j < n; j++)
{
if (array[i] < array[j])
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
第3个回答  推荐于2017-12-16
我重新写了个,你自己看下,还是比较高效的

#include<iostream.h>
#define N 6
template<class type1>
void range(type1 a[N])
{
int i=0;int j=1; bool flag=1;
for(i=0;i<N;i++)
{
if(flag)
{
flag=0;
for(j=0;j<N-1;j++)
{
if(a[j]>a[j+1])
{
flag=1;
type1 k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
}
else
{
break;
}
}
}
template<class type2,class type3>
void paixu(type2 a[N],type3 b[N])
{
int i=0;int j=0;
while(i<N&&j<N)
{
if(a[i]<b[j])
{
cout<<a[i]<<" ";
i++;
}
else
{
cout<<b[j]<<" ";
j++;
}
}
if(i<N)
{
for(i;i<N;i++)
{
cout<<a[i]<<" ";
}
}
else
{
for(j;j<N;j++)
{
cout<<b[j]<<" ";
}
}
cout<<endl;
}

void main()
{
int a[N]={342,88,99,66,65,122};char b[N]={'a','d','f','h','k','e'};
range(a);range(b);
paixu(a,b);
}本回答被网友采纳
第4个回答  2013-12-03
你的char是按ASC码算的么?很简单的啊,我马上写
相似回答