龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

排序算法比较程序

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
功能要求如下: 排序算法比较: shellsort, quicksort, heapsort, mergesort 的算法实现 , 对同样数据集的排序时间比较。 源代码: # include # include # define MAXSIZE 2000 typedef strUCt{ int key[MAXSIZE]; int

  功能要求如下:

  

  

排序算法比较: shellsort, quicksort, heapsort, mergesort 的算法实现 ,

  

对同样数据集的排序时间比较。

  

  

  

源代码:

  

  

# include

  

# include

  

  

# define MAXSIZE 2000

  

  

typedef strUCt{

  

int key[MAXSIZE];

  

int length;

  

}list;

  

  

  

long int compCount;

  

long int shiftCount;

  

  

  

void menu(int *m)/*retun m*/

  

{

  

int i;

  

char menu[6][15]={"1 CREATE ","2 IMPORT ","3 SORT","4 SHOW RESULT",

  

"5 SAVE RESULT","6 EX99v"};

  

  

clrscr();

  

printf("SORT COMPARE SYSTEM

");

  

for (i=0;i<6;i++) printf("%s

",menu[i]);

  

printf("

Please Select (1-6):

");

  

  

scanf("%d",m);

  

  

}

  

  

  

  

void menusort(int *m)/*retun m*/

  

{

  

int i;

  

char menusort[5][15]={"1 SHELL SORT","2 QUICK SORT","3 HEAP SORT",

  

"4 MERGE SORT","5 ALL SORT"};

  

  

clrscr();

  

printf("SORT

");

  

for(i=0;i<5;i++) printf("%s

",menusort[i]);

  

printf("

Please Select (1-5):

");

  

  

scanf("%d",m);

  

  

}

  

  

  

void menushow(int *m)/*retun m*/

  

{

  

int i;

  

char menushow[4][20]={"1 SHELL SORT RESULT","2 QUICK SORT RESULT",

  

"3 HEAP SORT RESULT","4 MERGE SORT RESULT"};

  

  

clrscr();

  

printf("SHOW SORT RESULT

");

  

  

for(i=0;i<4;i++) printf("%s

",menushow[i]);

  

printf("

Please Select (1-4):

");

  

  

scanf("%d",m);

  

  

}

  

  

void menusave(int *m)

  

{

  

int i;

  

char menusave[4][20]={"1 SHELL SORT RESULT","2 QUICK SORT RESULT",

  

"3 HEAP SORT RESULT","4 MERGE SORT RESULT"};

  

  

clrscr();

  

printf("SAVE:

");

  

for (i=0;i<4;i++) printf("%s

",menusave[i]);

  

printf("

Please Select (1-4):

");

  

  

scanf("%d",m);

  

}

  

  

void create(list *L)

  

{

  

int i;

  

  

printf("HOW MANY DATA?

");

  

scanf("%d",&((*L).length));

  

  

for(i=1;i<=(*L).length;i++)

  

{

  

printf("

PLEASE INPUT THE %dth DATA:

",i);

  

scanf("%d",&(*L).key[i]);

  

}

  

printf("

CREATE COMPLETE !

");

  

  

}

  

  

  

int listopen(list *L,char *filename)

  

{

  

int k=1;

  

FILE *data;

  

  

data=NULL;

  

  

  

data=fopen(filename,"rb");

  

  

while (! feof(data))

  

{

  

fscanf(data,"%d",&(*L).key[k]);

  

k++;

  

}

  

(*L).length=k-1;

  

}

  

  

void import(list *L)/*fix L*/

  

{

  

char filename[255];

  

int i;

  

  

printf("

PLEASE INPUT THE FILE PATH AND NAME:

");

  

  

scanf("%s",filename);

  

  

clrscr();

  

listopen(L,filename);

  

for(i=1;i<(*L).length;i++) printf("%d ",(*L).key[i]);

  

printf("

PRESS ANYKEY RETURN TO MAINMENU...

");

  

getch();

  

}

  

  

void save(list L)

  

{

  

FILE *data;

  

char filename[255];

  

int r;

  

  

printf("

PLEASE INPUT THE FILE PATH AND NAME:

");

  

scanf("%s",filename);

  

  

data=fopen(filename,"wb");

  

for(r=1;r<=L.length;r++) fprintf(data,"%d

",L.key[r]);

  

fclose(data);

  

printf("SAVE OK!

PRESS ANY KEY TO RETURN THE MAINMENU... ");

  

getch();

  

  

}

  

  

  

list shellsort(list L)/*retun L_SHELL*/

  

{

  

int i,j,gap,x,n;

  

  

compCount=shiftCount=0;

  

n=L.length;

  

gap=n/2;

  

while (gap>0)

  

{

  

compCount++;

  

for(i=gap+1;i<=n;i++)

  

{

  

compCount++;

  

j=i-gap;

  

while(j>0)

  

{

  

compCount++;

  

精彩图集

赞助商链接