数据结构各种排序算法的课程设计实验报告(c语言版) 下载本文

内容发布更新时间 : 2024/6/10 13:30:40星期一 下面是文章的全部内容请认真阅读。

数据结构各种排序算法的课程设计实验报告(c语言版)

}

}

}

r[i] =r[j]; i = j; j *= 2;

else

j = m + 1;

r[i] = x;

8.6归并排序

#include #include #define Q 1000 typedef struct {

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 #include #define Q 1000 typedef struct {

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 #include\#include\

30 / 33