代码如下:
#include<iostream>
using namespace std;
const int Maxsize = 12;
template<class T>
class PX
{
public:
PX();
~PX();
void zjcrpx(T a[]);
void mppx(T a[]);
void jdxzpx(T a[]);
T a[];
};
template<class T>
PX<T>::PX()
{
for(int i=0;i<Maxsize;i++)
cin>>a[i];
for(int i=0;i<Maxsize;i++)
cout<<a[i]<<" ";
cout<<endl;
}
template<class T>
PX<T>::~PX()
{
}
template<class T>
void PX<T>::zjcrpx(T a[])
{
int k=Maxsize;
int j;
for(int i=1;i<k;i++)//循环从第2个元素开始
{
if(a[i]<a[i-1])
{
T temp=a[i];
for(j=i-1;j>=0 && a[j]>temp;j--)
{
a[j+1]=a[j];
}
a[j+1]=temp;//此处就是a[j+1]=temp;
}
}
cout<<"直接插入排序的结果是:";
for(int f=0;f<k;f++)
{
cout<<a[f]<<" ";
}
cout<<endl;
}
template<class T>
void PX<T>::mppx(T a[])//冒泡排序
{
int len = Maxsize;
int i, j; T temp;
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
if (a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
cout<<"冒泡排序的结果是:";
for (int i = 0; i < len; i++)
cout << a[i] << ' ';
cout << endl;
}
template<class T>
void PX<T>::jdxzpx(T a[])
{
int i,j,k;
T temp;
for(i=1;i<Maxsize;i++)
{
k=i;
for(j=i+1;j<Maxsize;j++)
if(a[j]<a[k])
k=j;
if(i!=k)
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
cout<<"简单选择排序的结果是:";
for (int i = 0; i < Maxsize; i++)
cout << a[i] << ' ';
cout << endl;
};
int main()
{
PX<int> t;
t.zjcrpx(t.a);
t.mppx(t.a);
t.jdxzpx(t.a);
}
这里采用的是由使用者输入一个数组,然后再让数组排序。数据类型和数组长度均可改变,只需简单的修改一下程序