亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

排序算法比較程序

2019-09-06 23:33:33
字體:
來源:轉載
供稿:網友

                    功能要求如下:

排序算法比較: shellsort, quicksort, heapsort, mergesort 的算法實現 ,
對同樣數據集的排序時間比較。


源代碼:

# include <stdio.h>
# include <time.h>

# 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",
/t/t/t   "5 SAVE RESULT","6 EXIT"};

   clrscr();
   printf("SORT COMPARE SYSTEM");
   for (i=0;i<6;i++) printf("%s",menu);
   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",
/t/t/t    "4 MERGE SORT","5 ALL SORT"};
   
   clrscr();
   printf("SORT");
   for(i=0;i<5;i++) printf("%s",menusort);
   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",
/t/t/t    "3 HEAP SORT RESULT","4 MERGE SORT RESULT"};
   
   clrscr();
   printf("SHOW SORT RESULT");
   for(i=0;i<4;i++) printf("%s",menushow);
   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",
/t/t/t   "3 HEAP SORT RESULT","4 MERGE SORT RESULT"};
   
   clrscr();
   printf("SAVE:");
   for (i=0;i<4;i++) printf("%s",menusave);
   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++)
   {
/tprintf("PLEASE INPUT THE %dth DATA:",i);
/tscanf("%d",&(*L).key);
   }
   printf("CREATE COMPLETE !");
/t
}


int listopen(list *L,char *filename)
{
   int k=1;
   FILE *data;
   
   data=NULL;


   data=fopen(filename,"rb");
   
   while (! feof(data))
/t{
/t    fscanf(data,"%d",&(*L).key[k]);
/t    k++;
/t}
/t(*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);
   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();
/t
}


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)
   {
/tcompCount++;
/tfor(i=gap+1;i<=n;i++)
/t{
/t    compCount++;
/t    j=i-gap;
/t    while(j>0)
/t    {
/t/tcompCount++;
/t/tif(L.key[j]>L.key[j+gap])
/t/t{
/t/t    compCount++;
/t/t    x=L.key[j];shiftCount++;
/t/t    L.key[j]=L.key[j+gap];shiftCount++;
/t/t    L.key[j+gap]=x;shiftCount++;
/t/t    j=j-gap;
/t/t}
/t/telse j=0;
/t    }
/t/t
/t}
/tgap=gap/2;
   }
   return L;
}

void shell(list L,list *LS,float *timeshell)/*return LS,timeshell.
/t/t/t/t/t       MUST add an "getch"!!*/
{
   clock_t start,end;
   
/t
   start=clock();
   (*LS)=shellsort(L);
   end=clock();
   
   *timeshell=(end-start)/CLK_TCK;
   
   printf("SHELLSORT COST TIME :%f SECONDS.",*timeshell);
   printf("Compare %d times.Shfit %d times.",compCount,shiftCount);
}




int Partition(list * pL,int low,int high)
{
   int pivotkey;
   pL->key[0]=pL->key[low];shiftCount++;
   pivotkey=pL->key[low];shiftCount++;
   while(low<high)
   {
/tcompCount++;
/twhile(low<high && pivotkey<=(pL->key[high]))
/t     {compCount++;compCount++; --high;}
/tpL->key[low]=pL->key[high];shiftCount++;
/twhile(low<high && (pL->key[low])<=pivotkey)
/t     {compCount++;compCount++; ++low;}
/tpL->key[high]=pL->key[low];shiftCount++;
   }
   pL->key[low]=pL->key[0];shiftCount++;
   return low;
}/*Partition*/

void QSort(list * pL,int low,int high)
{
   int pivotloc;
   if(low<high)
   {
/tcompCount++;
/tpivotloc=Partition(pL,low,high);
/tQSort(pL,low,pivotloc-1);
   QSort(pL,pivotloc+1,high);
   }
}/*QSort*/

list QuickSort(list pL)
{
   compCount=shiftCount=0;
   QSort(&pL,1,pL.length);
   return pL;
}/*QuickSort*/


void quick(list L,list *LQ,float *timequick)/*MUST add an "getch"!!*/
{
   clock_t start,end;


   start=clock();
   (*LQ)=QuickSort(L);
   end=clock();
   
   *timequick=(end-start)/CLK_TCK;
   
   printf("QUICKSORT COST TIME :%f SECONDS.",*timequick);
   printf("Compare %d times.Shfit %d times.",compCount,shiftCount);
}


void sift(list L,int l,int m)
{
   int i,j,x;
   i=l;
   j=2*i;
   x=L.key;
   while (j<=m)
   {
/tcompCount++;
/tif(j<m && L.key[j]<L.key[j+1]) {j++;compCount++;compCount++;}
/tif(x<L.key[j])
/t{
/t    compCount++;
/t    L.key=L.key[j];shiftCount++;
/t    i=j;shiftCount++;
/t    j=2*i;
/t}
/telse j=m+1;
   }
   L.key=x;shiftCount++;
}

list heapsort(list L)
{
   int i,w;
   
   compCount=shiftCount=0;
   for (i=L.length/2;i>=1;i--) {sift(L,i,L.length);compCount++;}
   for (i=L.length;i>=2;i--)
   {
/tcompCount++;
/tw=L.key;shiftCount++;
/tL.key=L.key[1];shiftCount++;
/tL.key[1]=w;shiftCount++;
/tsift(L,i-1,1);
   }
   return L;
}


void heap(list L,list *LH,float *timeheap)
{
   clock_t start,end;
   
/t
   start=clock();
   (*LH)=heapsort(L);
   end=clock();
   
   *timeheap=(end-start)/CLK_TCK;
   
   printf("HEAPSORT COST TIME :%f SECONDS.",*timeheap);
   printf("Compare %d times.Shfit %d times.",compCount,shiftCount);
}



void Merge(int source[],int result[],int size,int n)
{
   int lb1,lb2,ub1,ub2,p,i,j;
   lb1=0;
   p=0;
   while((lb1+size)<n)
   {
/tcompCount++;
/tlb2=lb1+size;
/tub1=lb2-1;
/tif((lb2+size-1)>n)
/t   { ub2=n-1; compCount++; shiftCount++;}
/telse
/t   {ub2=lb2+size-1; compCount++; shiftCount++;}
/ti=lb1;
/tj=lb2;
/twhile((i<=ub1)&&(j<=ub2))
/t    {
/t/tcompCount++;compCount++;
/t/tif(source<=source[j])
/t/t    {result[p++]=source[i++]; shiftCount++; compCount++;}
/t/telse
/t/t    {result[p++]=source[j++]; shiftCount++; compCount++;}
/t    }
/twhile(i<=ub1)
/t    {result[p++]=source[i++]; shiftCount++; compCount++;}
/twhile(j<=ub2)
/t    {result[p++]=source[j++]; shiftCount++; compCount++;}
/tlb1=ub2+1;
   }
   i=lb1;
   while(p<n)
      {compCount++; result[p++]=source[i++];shiftCount++;}
}

void Mergesort(list *L)
{
   int n=(*L).length;
   int s=1;
   int *temp=(int *)malloc(n*sizeof(int));
   compCount=shiftCount=0;
   
   if (temp==NULL)
   {
/tprintf("out of memory");
/treturn;
   }
   while(s<n)
   {
   compCount++;
   Merge((*L).key,temp,s,n);
/ts*=2;
   Merge(temp,(*L).key,s,n);
/ts*=2;
   }
   compCount++;
}


void domerge(list L,list *LM,float *timemerge)/*MUST add an "getch"!!*/
{
   clock_t start,end;


   start=clock();
   Mergesort(&L);
   
   end=clock();
   (*LM)=L;
   *timemerge=(end-start)/CLK_TCK;
   
   printf("MERGESORT COST TIME :%f SECONDS.",*timemerge);
   printf("Compare %d times.Shfit %d times.",compCount,shiftCount);
}



main()
{
   list L,LS,LQ,LH,LM;
   int LOCK3=0,LOCK4=0,LOCK5=0,RUN=1,LOCK41=0,LOCK42=0,LOCK43=0,LOCK44=0;
   int comd,r;
   float timeshell,timequick,timeheap,timemerge;
   
   while(RUN==1)
   {
start:
/tmenu(&comd);
/tswitch (comd)
/t{
/t    case 1:
/t/tcreate(&L);
/t/tLOCK3=1;
/t/tbreak;
/t    case 2:
/t/timport(&L);
/t/tLOCK3=1;
/t/tgoto start;
/t    case 3:
/t/tif(LOCK3==0) goto start;
/t/tmenusort(&comd);
/t/tLOCK4=1;
/t/tLOCK5=1;
/t/tswitch (comd)
/t/t{
/t/t case 1:
/t/t    LOCK41=1;
/t/t    shell(L,&LS,×hell);
/t/t    printf(" PRESS ANY KEY TO RETURN MAIN MENU... ");
/t/t    getch();
/t/t    goto start;
/t/t case 2:
/t/t    LOCK42=1;
/t/t    quick(L,&LQ,&timequick);
/t/t    printf(" PRESS ANY KEY TO RETURN MAIN MENU... ");
/t/t    getch();
/t/t    goto start;
/t/t case 3:
/t/t    LOCK43=1;
/t/t    heap(L,&LH,&timeheap);
/t/t    printf(" PRESS ANY KEY TO RETURN MAIN MENU... ");
/t/t    getch();
/t/t    goto start;
/t/t case 4:
/t/t    LOCK44=1;
/t/t    domerge(L,&LM,&timemerge);
/t/t    printf(" PRESS ANY KEY TO RETURN MAIN MENU... ");
/t/t    getch();
/t/t    goto start;
/t/t case 5:
/t/t    LOCK41=1;
/t/t    LOCK42=1;
/t/t    LOCK43=1;
/t/t    LOCK44=1;
/t/t    shell(L,&LS,×hell);
/t/t    quick(L,&LQ,&timequick);
/t/t    heap(L,&LH,&timeheap);
/t/t    domerge(L,&LM,&timemerge);
/t/t    printf(" PRESS ANY KEY TO RETURN MAIN MENU... ");
/t/t    getch();
/t/t    goto start;
/t/t case 6:
/t/t    goto start;
/t/t}
/t    case 4:
/t/tif(LOCK4==0) goto start;
/t/tmenushow(&comd);
/t/tswitch(comd)
/t/t{
/t/t case 1:
/t/t    if(LOCK41==0) goto start;
/t/t    for (r=1;r<=LS.length;r++)
/t/t/t printf("%d",LS.key[r]);
/t/t    printf(" PRESS ANY KEY TO RETURN MAIN MENU... ");
/t/t    getch();
/t/t    goto start;
/t/t case 2:
/t/t    if(LOCK42==0) goto start;
/t/t    for (r=1;r<=LQ.length;r++)
/t/t/t printf("%d",LQ.key[r]);
/t/t    printf(" PRESS ANY KEY TO RETURN MAIN MENU... ");
/t/t    getch();
/t/t    goto start;
/t/t case 3:
/t/t    if(LOCK43==0) goto start;
/t/t    for (r=1;r<=LH.length;r++)
/t/t/t printf("%d",LH.key[r]);
/t/t    printf(" PRESS ANY KEY TO RETURN MAIN MENU... ");
/t/t    getch();
/t/t    goto start;
/t/t case 4:
/t/t    if(LOCK44==0) goto start;
/t/t    for (r=1;r<=LM.length;r++)
/t/t/t printf("%d",LM.key[r]);
/t/t    printf(" PRESS ANY KEY TO RETURN MAIN MENU... ");
/t/t    getch();
/t/t    goto start;
/t/t case 6:
/t/t    goto start;
/t/t}
/t    case 5:
/t/tif(LOCK5==0) goto start;
/t/tmenusave(&comd);
/t/tswitch (comd)
/t/t{
/t/t
/t/t    case 1:
/t/t/tif(LOCK41==0) goto start;
/t/t/tsave(LS);
/t/t/tbreak;
/t/t    case 2:
/t/t/tif(LOCK42==0) goto start;
/t/t/tsave(LQ);
/t/t/tbreak;
/t/t    case 3:
/t/t/tif(LOCK43==0) goto start;
/t/t/tsave(LH);
/t/t/tbreak;
/t/t    case 4:
/t/t/tif(LOCK44==0) goto start;
/t/t/tsave(LM);
/t/t/tbreak;
/t/t    case 6:
/t/t/tbreak;
/t/t/t
/t/t}
/t/tbreak;
/t    case 6:
/t/texit(0);
/t}
   
   }    
   

}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一天堂无码专区| 国产综合久久久久| 欧美一级淫片aaaaaaa视频| 国产在线拍偷自揄拍精品| 伊人一区二区三区久久精品| 国产丝袜视频一区| 51精品国产黑色丝袜高跟鞋| 亚洲美女av黄| 神马久久久久久| 丰满岳妇乱一区二区三区| 日韩在线视频国产| 亚洲国产精品视频在线观看| 亚洲新声在线观看| 久久久久久网址| 中文字幕日韩欧美| 高清视频欧美一级| 欧美一级片免费在线| 精品国内自产拍在线观看| 成人深夜直播免费观看| 中文字幕亚洲欧美一区二区三区| 精品欧美国产一区二区三区| 成人免费高清完整版在线观看| 午夜欧美不卡精品aaaaa| 视频一区视频二区国产精品| 日韩一区二区三区xxxx| 久色乳综合思思在线视频| 亚洲最大中文字幕| 国产精品老女人精品视频| 国产精品夜间视频香蕉| 欧美电影在线观看| 精品爽片免费看久久| 亚洲欧美中文另类| 欧美黄色片免费观看| 欧美综合第一页| 日韩视频欧美视频| 日韩视频在线免费观看| 亚洲午夜未满十八勿入免费观看全集| 欧美午夜女人视频在线| 欧美猛男性生活免费| 久久亚洲私人国产精品va| 日韩欧美黄色动漫| zzijzzij亚洲日本成熟少妇| 日韩av在线一区| 色吧影院999| 日韩欧美在线第一页| 中日韩美女免费视频网站在线观看| 亚洲午夜色婷婷在线| 日韩中文字幕网站| 亚洲第一视频网站| 亚洲精品美女在线观看| 日韩中文在线中文网三级| 一本色道久久综合狠狠躁篇怎么玩| 精品精品国产国产自在线| 91精品国产乱码久久久久久蜜臀| 精品国产乱码久久久久久虫虫漫画| 久久精品亚洲国产| 亚洲欧洲日产国码av系列天堂| 国产一区二区在线免费| 亚洲国产欧美一区二区三区同亚洲| 久久久久久噜噜噜久久久精品| 亚洲最大福利网站| 中文字幕综合在线| 欧美极品在线播放| 亚洲免费中文字幕| 久久精品成人欧美大片古装| 69视频在线免费观看| 88国产精品欧美一区二区三区| 亚洲国产精品人久久电影| 91影院在线免费观看视频| 91久久精品久久国产性色也91| 国产在线精品播放| 国产精品99一区| 米奇精品一区二区三区在线观看| 亚洲黄页网在线观看| 亚洲一区二区国产| 俺去亚洲欧洲欧美日韩| 色偷偷噜噜噜亚洲男人| 欧美一区二粉嫩精品国产一线天| 国产精品视频色| 欧美有码在线观看| 亚洲精品美女在线| 欧美日韩国产页| 亚洲精品二三区| 亚洲专区国产精品| 国产成人精品久久二区二区| 日韩av网站导航| 国产精品91一区| 日韩av一卡二卡| 在线性视频日韩欧美| 91精品国产沙发| 欧美香蕉大胸在线视频观看| 一夜七次郎国产精品亚洲| 久久天天躁狠狠躁夜夜躁| 黑人巨大精品欧美一区二区| 色悠悠久久88| 欧美性猛交xxxx免费看| 国产精品吹潮在线观看| 欧洲亚洲在线视频| 久久精品福利视频| 亚洲 日韩 国产第一| 亚洲国产精品电影| 日韩电影第一页| 91亚洲va在线va天堂va国| 九九精品在线视频| 中文字幕欧美日韩在线| 69久久夜色精品国产7777| 欧洲亚洲免费视频| 国产精品xxx视频| 午夜伦理精品一区| 亚洲电影免费观看高清完整版在线| 国产精品www| 狠狠躁夜夜躁人人爽超碰91| 国产在线98福利播放视频| 国产精品久久久久久久久久久不卡| 久久精品视频免费播放| 成人a免费视频| 欧美日本高清一区| 在线视频国产日韩| 亚洲美女在线视频| 韩国日本不卡在线| 久久6免费高清热精品| 亚洲第一色在线| 精品亚洲一区二区三区| 亚洲成年人在线| 亚洲欧美国产精品专区久久| 在线观看欧美成人| 久久亚洲精品一区二区| 国产91露脸中文字幕在线| 九九精品视频在线观看| 久久久久久香蕉网| 18性欧美xxxⅹ性满足| 亚洲欧美精品伊人久久| 亚洲日本欧美中文幕| 亚洲欧洲av一区二区| 日本国产高清不卡| 国产精品美女久久久久久免费| 国产精品久久久久久搜索| 色婷婷成人综合| 欧美日韩亚洲网| 九九热精品在线| 欧美猛交ⅹxxx乱大交视频| 91人人爽人人爽人人精88v| 亚洲福利视频久久| 国内精品久久久久影院 日本资源| 久久精品99久久久香蕉| 日韩欧美在线视频| 日韩精品视频在线播放| 亚洲精品www| 欧美精品久久一区二区| 亚洲va欧美va国产综合久久| 精品久久久香蕉免费精品视频| 欧美理论电影在线播放| 一区二区三区回区在观看免费视频| 成人免费视频在线观看超级碰| 欧亚精品中文字幕| 国产在线观看91精品一区| 亚洲护士老师的毛茸茸最新章节| 亚洲电影在线看| 黑人巨大精品欧美一区免费视频| 欧亚精品中文字幕| 5566成人精品视频免费| 久久久视频在线| 欧美成在线观看| 国产成人精品一区二区在线|