编一个冒泡排序的函数模板实现降序.可以用小于比较,冒泡采用从上往下;也可用大于比较,冒泡采用从下往上.
我已编写了一个,可以运行,但离题目的要求还差一点点,请版主帮我看看:
template<typename T> void enter(T a[],int); template<typename T> void bubble(T a[],int); template<typename T> void print(T a[],int);
int _tmain() { int a[100],size; cout<<"请确定数组的大小:"; cin>>size; enter(a,size); bubble(a,size); print(a,size); return 0; }
template<typename T> void enter(T a[],int n) { int i; cout<<"请输入"<<n<<"个元素:"; for(i=0;i<n;i++) cin>>a[i]; cout<<"未排序的数组元素为:"<<endl; for(i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; } template<typename T> void bubble(T a[],int n) { int i,j,t,temp; for(i=1;i<=n-1;i++) { t=n-i; for(j=0;j<=t-1;j++) if(a[j]<a[j+1]) {temp=a[j];a[j]=a[j+1];a[j+1]=temp;} } } template<typename T> void print(T a[],int n) { int i; cout<<"排序后的数组元素为:"<<endl; for(i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; }
我的这个排序是适用第一种情况:(用小于比较,冒泡采用从上往下),主要是如何实现(也可用大于比较,冒泡采用从下往上),我把其中的bubble()函数改了一下:
template<typename T> void bubble(T a[],int n) { int i,j,t,temp; for(i=n-1;i>=1;i--) { t=n-i; for(j=t;j>=1;j--) if(a[j]>a[j-1]) {temp=a[j];a[j]=a[j-1];a[j-1]=temp;} } } 请问这个是不是(用大于比较,冒泡采用从下往上),如果是,请问如何与从上往下的统一成一个函数模板
如果不是,请版主帮我修改,麻烦了,我下周二要交上去