附录: 归并排序的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(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 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(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; }