floodtime:几种基本的排序

来源:百度文库 编辑:中财网 时间:2024/04/30 03:24:40
//六种排序#include#define max 100class 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 binsertsort(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<"输入第><><" ¸元数:="" ";="" cin="">>s.A[i]; }}void process::binsertsort(sample &s) //折半排序{ int i,j,mid,high,low; for(i=1;i<=high) {="" mid="(low+high)/2;">=high;--j) s.A[j+1]=s.A[j]; s.A[high+1]=s.A[s.n]; }}void process::insertsort(sample &s) //直接插入排序{ int i,j,temp; for(i=0;i0) { for(i=gap;i=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 j,i,temp; for(i=0;ii+1;j--) { if(s.A[j]i&&s.A[j]>=temp) j--; if(i<><=temp) i++;=""><><" ";=""><"原来排序: ";="" p.disp(s);="" do="" {=""><"0: 直接插入排序="" 1:西尔排序="" 2:冒泡排序="" 3:快速排序="" 4:选择排序="" 5:="" 折半排序=""><"选择排序方法: ";="" cin="">>sel; switch(sel) { case 0: p.insertsort(s); cout<"直接插入排序的结果: ";="" p.disp(s);=""><"是(y )否继续:="" ";="" cin="">>c; break; case 1: p.shellsort(s); cout<"西尔排序的结果: ";="" p.disp(s);=""><"是(y )否继续:="" ";="" cin="">>c; break; case 2: p.bubblesort(s); cout<"冒泡排序的结果: ";="" p.disp(s);=""><"是(y )否继续:="" ";="" cin="">>c; break; case 3: p.quicksort(s); cout<"快速排序的结果: ";="" p.disp(s);=""><"是(y )否继续:="" ";="" cin="">>c; break; case 4: p.selectsort(s); cout<"选择排序的结果: ";="" p.disp(s);=""><"是(y )否继续:="" ";="" cin="">>c; break; case 5: p.binsertsort(s); cout<"折半排序的结果: ";="" p.disp(s);=""><"是(y )否继续:="" ";="" cin="">>c; break; default: c=‘n‘; break; } if(c!=‘y‘&&c!=‘Y‘) cout<>