
c++中用模板函数写冒泡算法,对int,double,char三种数据类型的数据排序(要排在一起)
c++中用模板函数写冒泡算法,对int,double,char三种数据类型的数据排序(要排在一起)。...
c++中用模板函数写冒泡算法,对int,double,char三种数据类型的数据排序(要排在一起)。
展开
4个回答
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);
}
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
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;
}
}
}
}
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;
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于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);
}
#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);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-03
展开全部
你的char是按ASC码算的么?很简单的啊,我马上写
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询