数据结构课程设计
bj1++; R1[k]=R[i]; yd1++; i++; k++; } else { bj1++; R1[k]=R[j]; yd1++; j++; k++; } }
while(i<=m) {
R1[k]=R[i]; yd1++; i++; k++; }
while(j<=high) {
R1[k]=R[j]; yd1++; j++; k++; } }
void MergePass(ElemType R[],ElemType R1[],int length, int n) { int i=0,j;
while(i+2*length-1 24 数据结构课程设计 { Merge(R,R1,i,i+length-1,i+2*length-1); i=i+2*length; } if(i+length-1 Merge(R,R1,i,i+length-1,n-1); else for(j=i;j void MSort(ElemType R[],ElemType R1[],int n) { int length=1; while (length MergePass(R,R1,length,n); length=2*length; MergePass(R1,R,length,n); length=2*length; } } void MergeSort(SqList &L) { start_t=clock(); BeforeSort(); MSort(L.elem,L.elem,L.length); display(bj1,yd1); end_t=clock(); t5=(double)(end_t-start_t)/CLK_TCK; printf(\排序用时为 %f\\n\ A[5]=bj1; B[5]=yd1; C[5]=t5; 25 数据结构课程设计 } void printf(SqList &L) { long int d[6]; int i,n; printf(\★★★★★★比较次数★★★★★★\\n\printf(\ for(i=0;i<5;i++) d[i]= sqrt (A[i]/A[5]); printf(\ 归并排序: *\ printf(\ printf(\ 选择排序: \ for(n=0,i=0;n<=d[i];n++) { printf(\ } printf(\ printf(\ 冒泡排序: \ for(n=0,i=1;n<=d[i];n++) { printf(\ } printf(\ printf(\ 直插排序: \ for(n=0,i=2;n<=d[i];n++) { printf(\ } printf(\ printf(\ 希尔排序: \ for(n=0,i=3;n<=d[i];n++) { printf(\ 26 数据结构课程设计 } printf(\ printf(\ 快排排序: \ for(n=0,i=4;n<=d[i];n++) { printf(\ } printf(\ printf(\★★★★★★移动次数★★★★★★\\n\ printf(\ double e[6]; for(i=0;i<6;i++) e[i]= sqrt (B[i]/B[3]); printf(\ 希尔排序: *\ printf(\ printf(\ 选择排序: \ for(n=0,i=0;n<=e[i];n++) { printf(\ } printf(\ printf(\ 冒泡排序: \ for(n=0,i=1;n<=e[i];n++) { printf(\ } printf(\ printf(\ 直插排序: \ for(n=0,i=2;n<=e[i];n++) { printf(\ } printf(\ 27 数据结构课程设计 printf(\ 快排排序: \ for(n=0,i=4;n<=e[i];n++) { printf(\ } printf(\ printf(\ 归并排序: \ for(n=0,i=5;n<=e[i];n++) { printf(\ } printf(\ printf(\★★★★★★排序用时★★★★★★\\n\ printf(\ double f[6]; for(i=0;i<6;i++) f[i]= sqrt (C[i]/0.001); printf(\ 希尔排序: *\ printf(\ printf(\ 选择排序: \ for(n=0,i=0;n<=f[i];n++) { printf(\ } printf(\ printf(\ 冒泡排序: \ for(n=0,i=1;n<=f[i];n++) { printf(\ } printf(\ printf(\ 直插排序: \ for(n=0,i=2;n<=f[i];n++) 28