附录: 归并排序的C++语言描述 #include<iostream h template<class T>void Merge Sort(T a[l, int left, int right); template<class t>void Merge(tcl, Td[, int l, int m, int r); template<class t>void Copy (tal,T bl, int l, int r) void maino int const n(5) int an]; cout<<"Input"<<n<<"numbers please for(int i =0; i<n; i++) ∥for(intj=0J //bGl=an] Merge Sort(a,0, n-1) cout<<The sorted array is"<<endl for(i=0 i<n; 1++) cout<<al cout<<endl template<class t> void Merge Sort(T a[l, int left, int right)// if(left<right) int i=(left+right) /2 T*b=new TI Merge Sort(a, left, i); Merge Sort(a, i+l, right); Merge(a, b, left, i, right) Copy(a, b, left, right)
附录: 归并排序的 C++语言描述 #include<iostream.h> template<class T>void MergeSort(T a[],int left,int right); template<class T>void Merge(T c[],T d[], int l,int m,int r); template<class T>void Copy(T a[],T b[],int l,int r); void main() { int const n(5); int a[n]; cout<<"Input "<<n<<"numbers please:"; for(int i=0;i<n;i++) cin>>a[i]; //for(int j=0;j<n;j++) //b[j]=a[j]; MergeSort(a,0,n-1); cout<<"The sorted array is"<<endl; for(i=0;i<n;i++) cout<<a[i]; cout<<endl; } template<class T> void MergeSort(T a[],int left,int right) // { if(left<right) { int i=(left+right)/2; T *b=new T[]; MergeSort(a,left,i); MergeSort(a,i+1,right); Merge(a,b,left,i,right); Copy(a,b,left,right); }
template<class t> void Merge(tcl,t dI, int I, int m, int r) nt int j=m+I int kl while((i<=m)&&g<=r)) if(c<=cl)d[k++=ci++; else d[k++F=c[++] if(i>m) for(int q=j; q<=r; q++) dk++l=clql for(int q=1; q<=m; q++) template<class t> void Copy(tal,t b[, int I, int r) for(int i-l; K<=r; i++ a[-b[; 快速排序的C++语言描述 #include<iostream. h template<class T>void Quick Sort(T a[l, int p, int r) template<class t>int Partition(T[, int p, int r)
} template<class T> void Merge(T c[],T d[],int l,int m,int r) { int i=l; int j=m+1; int k=l; while((i<=m)&&(j<=r)) { if(c[i]<=c[j])d[k++]=c[i++]; else d[k++]=c[j++]; } if(i>m) { for(int q=j;q<=r;q++) d[k++]=c[q]; } else for(int q=i;q<=m;q++) d[k++]=c[q]; } template<class T> void Copy(T a[],T b[], int l,int r) { for(int i=l;i<=r;i++) a[i]=b[i]; } 快速排序的 C++语言描述 #include<iostream.h> template<class T>void QuickSort(T a[],int p,int r); template<class T>int Partition(T a[],int p,int r);
void maino int const n(5) int a[n] cout<<"Input"<<n<<"numbers please for(int i =0; i<n; i++) cin>>all Quick Sort(a,0n-1) cout<<The sorted array is" <<endl for(i=0; i<n; 1++) cout<<a]<<""; cout<<endl template<class t> void QuickSort(T[l, int p, int r) if(p<r) int q=Partition(a,p, r); Quick Sort(, p, q-1) Quick Sort(a, q+1, r) template<class t> int Partition(T a[l, int p, int r) int i= j=r+I while(true) while(a[++i]<x); hile(a[--jP>x);
void main() { int const n(5); int a[n]; cout<<"Input "<<n<<"numbers please:"; for(int i=0;i<n;i++) cin>>a[i]; QuickSort(a,0,n-1); cout<<"The sorted array is"<<endl; for(i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; } template<class T> void QuickSort(T a[],int p,int r) { if(p<r) { int q=Partition(a,p,r); QuickSort(a,p,q-1); QuickSort(a,q+1,r); } } template<class T> int Partition(T a[],int p,int r) { int i=p,j=r+1; T x=a[p]; while(true) { while(a[++i]<x); while(a[--j]>x); if(i>=j)break;
Swap(aj], aD) ap=all return template<class t> inline void Swap(T &s,T&t)
Swap(a[i],a[j]); } a[p]=a[j]; a[j]=x; return j; } template<class T> inline void Swap(T &s,T &t) { T temp=s; s=t; t=temp; }