2013 9 30
*/
#include
#include
#define max 100
class sample //类实例
{
int A[max];
int n;
friend class process; //
public:
sample(){n=0;} //
};
class process //类排序
{
void qsort(sample &s,int l,int h);//私有成员,由quicksort()成员调用
public:
void getdata(sample &s); //用于获取对象s的数据
void insertsort(sample &s); //用于进行插入排序
void shellsort(sample &s); //用于进行希尔排序
void bubblesort(sample &s); //用于进行冒泡排序
void quicksort(sample &s); //用于进行快速排序
void selectsort(sample &s); //用于进行选择排序
void disp(sample &s); //用于数据输出
};
void process::getdata(sample &s)//获取对象s的数据
{
int i;
cout<<"元素个数 : ";
cin>>s.n;
for(i=0;i { cout<<"输入第<
cin>>s.A[i]; } } void process::insertsort(sample &s)//插入排序 { int i,j,temp; for(i=0;i { temp=s.A[i]; j=i-1; while(temp { s.A[j+1]=s.A[j]; j--; } s.A[j+1]=temp; } } void process::shellsort(sample &s)//希尔排序 { int i,j,gap,temp; gap=s.n/2; while(gap>0) { for(i=gap;i { j=i-gap; while(j>=gap) if(s.A[j]>s.A[j+gap]) { temp=s.A[j]; s.A[j]=s.A[j+gap]; s.A[j+gap]=temp; j=j-gap; } else j=0; } gap=gap/2; } }; void process::bubblesort(sample &s)//冒泡排序 { int i,j,temp; for(i=0;i for(j=s.n-1;j>=i+1;j--) { if(s.A[j] { temp=s.A[j]; s.A[j]=s.A[j-1]; s.A[j-1]=temp; } } } void process::quicksort(sample &s) //快速排序 { qsort(s,0,s.n-1); } void process::qsort(sample &s,int l,int h) { int i=1,j=h,temp; if(l { temp=s.A[l]; do { while(j>i&&s.A[j]>=temp) j--; if(i { s.A[i]=s.A[j]; i++; } while(i i++; if(i { s.A[j]=s.A[i]; j--; } } while(i s.A[i]=temp; qsort(s,l,j-1); qsort(s,j+1,h); } } void process::selectsort(sample &s)//选择排序 { int i,j,k,temp; for(i=0;i { k=i; for(j=i+1;j<=s.n-1;j++) { if(s.A[j] k=j; } temp=s.A[i]; s.A[i]=s.A[k]; s.A[k]=temp; } } void process::disp(sample &s) //输出数据 { for(int i=0;i cout< cout< } void main() //主函数入口 { int sel; sample s; process p; p.getdata(s); cout<<"原来排序:"; p.disp(s); cout<<"选择排序方法:"< cout<<"0 :插入排序 1 :希尔排序 2 :冒泡排序 3 :快速排序 4 :选择排序 其它退出 "< cout<<"输入:"; cin>>sel; switch(sel) { case 0: p.insertsort(s); cout<<"插入排序结果:"; break; case 1: p.shellsort(s); cout<<"希尔排序结果:"; break; case 2: p.bubblesort(s); cout<<"冒泡排序结果:"; break; case 3: p.quicksort(s); cout<<"快速排序结果:"; break; case 4: p.selectsort(s); cout<<"选择排序结果:"; break; } p.disp(s); }