程序设计培训讲义5:排序和查找.ppt

void merge(int r[ ],int r1[ ],int low,int m,int h) /*r[low..m]及r[m+1..h]分别有序,归并后置于r1中*/ { int i=low,j=m+1,k=low; /*i和j是r的指示器*/ /*i的取值从l到m,j的取值从m+1到h;k是r1的指示器*/ while (i=m j=h) { if (r[i]=r[j]) /*前者小于后者*/ { r1[k]=r[i]; i++; k++; } else /*前者大于或等于后者*/ { r1[k]=r[j]; j++; k++; } } if (im) /*前部分结束*/ while (j=h) /*将后部分复制到r1*/ { r1[k]=r[j]; j++; k++; } else /*后部分结束*/ while (i=m) /*将前部分复制到r1*/ { r1[k]=r[i]; i++; k++; } } void mergepass(int r[ ],int r1[ ],int n,int len) //将r中长度为len的两个部分合并,第一部分从p到(p+len-1); //第二部分从p+1到(p+2*len-1) { int p=1; while (n-p+1

文档评论(0)

1亿VIP精品文档

相关文档