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

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

r.length = 0;

r.base=(char *) malloc(1000*sizeof(char));

r.stacksize = 1000;

while(!feof(fp))

for(k = 0; k < 10 ; k++) {

m = 10 - k;

for( i = m ; i < r.length; i ++ )

if(r.base[i] < r.base[i - m]) {

temp = r.base[i]; for(j = i - m ; j >= 0 && temp < r.base[j]; j -= m)

r.base[ j + m ] = r.base[j];

21 / 33

{ } r.length --; r.base --;

r.base= r.base - r.length;

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) { }

r.base = r.base + r.stacksize; r.stacksize += Q;

printf(\return ;

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

r.base[ j + m ] = temp;

}

}

rewind(fp); fprintf(fp,\ fclose(fp); free(r.base);

}

8.4简单选择排序

#include #include #define Q 1000 typedef struct { char *base ; int stacksize ;

int length;

}SqList4;

void jd(FILE *fp) {

SqList4 r; int i,j ,m;

char temp;

r.base=(char *) malloc(1000*sizeof(char)); r.stacksize = 1000;

r.length = 0;

while(!feof(fp)) { fscanf(fp,\ r.base++; r.length++;

if(r.length == r.stacksize ) {

r.base= r.base - r.length;

22 / 33

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

r.base=(char *) realloc(r.base,(r.stacksize + Q) * sizeof(char)); if(!r.base) { 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++ ) { temp=r.base[i];

for( j = i,m = j +1 ; m < r.length if(r.base[j] > r.base[m])

j = m;

r.base[i] = r.base[j]; r.base[j] = temp;

}

r.base[r.length] ='\\0'; rewind(fp);

fprintf(fp,\

fclose(fp); free(r.base);

}

8.5堆排序

#include #include #define Q 1000 typedef struct {

; m++) 23 / 33

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

char *base ; int stacksize ; int length;

}SqList5;

void HeapAdjust(char *r,int s,int m);

void dp(FILE *fp) {

SqList5 r;

int i,j; char temp,*k; r.length = 0;

r.base=(char *) malloc(1000*sizeof(char));

r.stacksize = 1000; r.base += 1;

while(!feof(fp))

{ } r.length --;

24 / 33

fscanf(fp,\r.base++; r.length++;

if(r.length == (r.stacksize - 1) ) { }

r.base= r.base - r.length - 1;

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 ;

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

r.base --;

r.base= r.base - r.length - 1;

for(i = r.length / 2;i >= 1 ; --i)

HeapAdjust(r.base,i,r.length);

for(i = r.length ;i >= 2 ; --i)

{

temp = r.base[1];

r.base[1] = r.base[i];

}

k = (char *) malloc((r.length+1)*sizeof(char));

r.base[i] = temp; HeapAdjust(r.base,1,i-1);

for(i = r.length,j = 0; i >= 1; i--,j++)

k[j] = r.base[i];

k[j]='\\0'; rewind(fp);

fprintf(fp,\ fclose(fp); }

void HeapAdjust(char *r,int k,int m) {

int i,j; char x;

i=k; x=r[i]; j=2*i; while(j<=m) {

if( (jr[j+1]) )

j++;

free(k); free(r.base);

if(x>r[j]) {

25 / 33