数据结构各种排序算法的课程设计实验报告(c语言版)
}
}
}
r[i] =r[j]; i = j; j *= 2;
else
j = m + 1;
r[i] = x;
8.6归并排序
#include
char *base ; int stacksize ; int length;
}SqList6;
void merge(SqList6 r,int h,int m,int w,SqList6 t) {
int i,j,k;
i = h; j = m + 1; k = h - 1; while((i <= m)&&(j <= w)) { } if(i > m)
while(j <= w) t.base[++k]=r.base[j++];
26 / 33
k++;
if(r.base[i] <= r.base[j]) else
t.base[k] = r.base[j++]; t.base[k] = r.base[i++];
数据结构各种排序算法的课程设计实验报告(c语言版)
else
while(i <= m) t.base[++k]=r.base[i++];
}
void tgb(int s,int n,SqList6 r,SqList6 t) { int i=1;
while(i<=(n-2*s+1)) { merge(r,i,i+s-1,i+2*s-1,t); i=i+2*s;
}
if(i<(n-s+1))
merge(r,i,i+s-1,n,t); else while(i<=n)
t.base[i]=r.base[i++];
}
void gb(FILE *fp) {
SqList6 r;
r.length = 0; r.base=(char *) malloc(1000*sizeof(char)); r.stacksize = 1000; r.base += 1; while(!feof(fp)) { fscanf(fp,\ r.base++; r.length++;
if(r.length == (r.stacksize - 1) ) {
r.base= r.base - r.length - 1;
27 / 33
数据结构各种排序算法的课程设计实验报告(c语言版)
}
}
r.base=(char *) realloc(r.base,(r.stacksize + Q) * sizeof(char)); if(!r.base) { }
r.base = r.base + r.stacksize; r.stacksize += Q;
printf(\return ;
r.length --;
r.base= r.base - r.length - 2;
int i,j,n,s=1;
n = r.length;
SqList6 t;
t.base=(char *) malloc(r.stacksize*sizeof(char)); while(s { } r.base[r.length] ='\\0'; rewind(fp); 28 / 33 tgb(s,n,r,t); s*=2; if(s i=0; while(i<=n) { } r.base[i]=t.base[i+1]; i++; 数据结构各种排序算法的课程设计实验报告(c语言版) fprintf(fp,\ fclose(fp); } free(t.base); free(r.base); 8.7冒泡排序 #include char *base ; int stacksize ; int length; }SqList7; void mp(FILE *fp) { SqList7 r; int i,j ,m; char temp; r.length = 0; r.base = (char *) malloc(1000*sizeof(char)); r.stacksize = 1000; while(!feof(fp)) { fscanf(fp,\r.base++; r.length++; if(r.length == r.stacksize ) { r.base= r.base - r.length; r.base=(char *) realloc(r.base,(r.stacksize + Q) * sizeof(char)); if(!r.base) { 29 / 33 数据结构各种排序算法的课程设计实验报告(c语言版) printf(\ return ; } r.base = r.base + r.stacksize; r.stacksize += Q; } } r.length --; r.base --; r.base= r.base - r.length; for( i=0; i < r.length ;i++ ) { m=1; for( j = r.length-2;j >= i;j -- ) if(r.base[j+1] < r.base[j]) { temp = r.base[j+1]; r.base[j+1] = r.base[j]; r.base[j] = temp; m = 0; } if( m ) break; } r.base[r.length] ='\\0'; rewind(fp); fprintf(fp,\ fclose(fp); free(r.base); } 8.8主程序 #include 30 / 33