void MSort ( ElemType *p,ElemType *p1,int s,int t ) { /*将p[s…t]归并排序为p1[s…t]*/ if ( s==t ) p1[s]=p[s] else { m= ( s+t ) /2; /*平分*p 表*/ MSort ( p,p2,s,m ); /*递归地将p[s…m]归并为有序的p2[s…m]*/ MSort ( p,p2,m+1,t ); /*递归地将p[m+1…t]归并为有序的p2[m+1…t]*/ Merge ( p2,p1,s,m+1,t ); /*将p2[s…m]和p2[m+1…t]归并到p1[s…t]*/ } } void MergeSort ( S_TBL *p ) { /*对顺序表*p 作归并排序*/ MSort ( p->elem,p->elem,1,p->length ); }