读书人

编写一个函数模版使用冒泡排序将数组

发布时间: 2012-04-21 14:34:44 作者: rapoo

编写一个函数模版,使用冒泡排序将数组内容由小到大排列并打印出来,并写出调用此函数 //模版的完整程序,使得函数调用时,数组的类型可以是整数也可以是双精度型。
#include<iostream>
using namespace std;
template<typename t>
class paixu
{
t* set;
int n;
public:
paixu(t* data,int m):set(data),n(m){}
void sort();
};
template<typename t>
void paixu<t>::sort()
{
t temp;
for(int i=1;i<n;i++)
for(int j=1;j<=n-j;j++)
if(set[j]>set[j+1])
{
temp=set[j];
set[j]=set[j+1];
set[j+1]=temp;
}
for(int j=0;j<n;j++)
cout<<set[j]<<" ";
cout<<endl;
}
int main()
{
int a[]={1,3,2,7,5,9};
double b[]={6.6,9.9,7.7,8.8,4.4,2.2};
paixu<int>p1(a,6);
p1.sort();
paixu<double> p2(b,6);
p2.sort();
char c[]={'a','c','r','b'};
paixu<char>p3(c,4);
p3.sort();
return 0;
}
为什么double型的就是不行,我是在vs2008里面编译的

[解决办法]
楼主,排序写错了,这两句对应改一下:

for(int i=0;i<n;i++)
for(int j=0;j<n-1;j++)
[解决办法]

探讨
引用:

C/C++ code

template<typename t>
void paixu<t>::sort()
{
t temp;
for(int i=1;i<n;i++)
for(int j=1;j<=n-j;j++)
if(set[j]>set[j+1])
{
temp=set[j];
set[j]=set[j+1];
set[j+1]=te……

[解决办法]
楼主的代码,整型也有问题,你把整型数组的第一个值换个大一点的比如8,你的冒泡排序有问题,把第一个数给丢了,

void paixu<t>::sort()
{
t temp;
for(int i=0;i<n;i++)
for(int j=0;j<n-i-1;j++)
if(set[j]>set[j+1])
{
temp=set[j];
set[j]=set[j+1];
set[j+1]=temp;
}
for(int j=0;j<n;j++)
cout<<set[j]<<" ";
cout<<endl;
}
[解决办法]
亲,冒泡法就是两两交换元素,我这样写只是多交换了几次,都是冒泡排序。
你刚才就是这写错了吧。。
C/C++ code
for(int i=0;i<n;i++)for(int j=0;j<n-1;j++) 

读书人网 >C++

热点推荐