编写一个冒泡排序的成员函数模板以实现降序排序。可用小于比较,冒泡采用从上向下;也可用用大于比较,冒泡才用从下向上;
#include <iostream>
#include <string>
using namespace std;
template <typename T,int s>
class shuzu{
private:
T a[s];
public:
void input();
T maopao();
void print();
};
template <typename T,int s>void shuzu<T,s>::input(){
int i;
for(i=0;i<s;i++)
cin>>a[i];
}
template <typename T,int s>void shuzu<T,s>::print(){
int i;
for(i=0;i<s;i++)
cout<<a[i]<<'\t';
}
template <typename T,int s>T shuzu<T,s>::maopao(){
int i,j;
T t;
for(i=0;i<s-1;i++)
for(j=0;j<s-i-1;j++)
if(a[j]<a[j+1]){
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
int main(){
shuzu <int 5>x;
shuzu <double 6>y;
x.input();
x.maopao();
x.print();
y.input();
y.maopao();
y.print();
return 0;
}
缺了逗号
shuzu <int, 5> x;
shuzu <double, 6> y;
冒泡排序写法没有错误,其他修改处见注释,供参考:
#include <iostream>
#include <string>
using namespace std;
template <typename T, int s>
class shuzu {
private:
T a[s];
public:
void input();
void maopao(); // T maopao();修改
void print();
};
template <typename T, int s>void shuzu<T, s>::input() {
int i;
for (i = 0; i < s; i++)
cin >> a[i];
}
template <typename T, int s>void shuzu<T, s>::print() {
int i;
for (i = 0; i < s; i++)
cout << a[i] << '\t';
cout << endl; //修改
}
template <typename T, int s>void shuzu<T, s>::maopao() {
//template <typename T,int s>T shuzu<T,s>::maopao() 修改
int i, j;
T t;
for (i = 0; i < s - 1; i++)
for (j = 0; j < s - i - 1; j++)
if (a[j] < a[j + 1]) {
t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;
}
}
int main() {
shuzu <int, 5>x{}; //shuzu <int 5>x;
shuzu <double, 6>y{}; //shuzu <double 6>y;
x.input();
x.maopao();
x.print();
y.input();
y.maopao();
y.print();
return 0;
}
你还是先好好温习一下冒泡排序,再来写代码吧
你这循环条件都错了呀
没有能够遍历整个数组