![]() ![]() |
|
二级模拟试题:C++习题与解析(友元-05) | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 16:08:08 文章录入:杜斌 责任编辑:杜斌 | |
|
|
解: process类不包含任何数据成员,包含的公共成员函数如下: getdata(Sample &s); 用于获取对象s的数据 insertsort(Sample &s); 用于进行插入排序 shellsort(Sample &s); 用于进行希尔排序 bubblesort(Sample &s); 用于进行冒泡排序 quicksort(Sample &s); 用于进行快速排序 selectsort(Sample &s); 用于进行选择排序 disp(Sample &s); 用于输出数据 本题程序如下: #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); 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) { int i; cout<<"元素个数:"; cin>>s.n; for(i=0;i cout<<"输入第"<cin>>s.A[i]; } } void process::insertsort(Sample &s) // 插入排序 来源:www.examda.com { int i,j,temp; for(i=1;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 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=l,j=h,temp; if(l do { while(j>i&&s.A[j]>=temp) j--; if(i s.A[i]=s.A[j]; i++; } while(i if(i s.A[j]=s.A[i]; j--; } }while(i 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] 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<<"0:插入排序 1:希尔排序 2:冒泡排序 3:快速排序 4:选择排序 其它退出"< 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); } 本程序的执行结果如下: 元素个数:8 输入第1个数据: 1 输入第2个数据: 6 输入第3个数据: 5 输入第4个数据: 3 输入第5个数据: 4 输入第6个数据: 8 输入第7个数据: 2 输入第8个数据: 7 原来序列: 1 6 5 3 4 8 2 7 来源:www.examda.com 0:插入排序 1:希尔排序 2:冒泡排序 3:快速排序 4:选择排序 其它退出 选择排序方法: 1 希尔排序结果: 1 2 3 4 5 6 7 8 |
|
![]() ![]() |