


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、方案设计:我这次实验通过随机生成30000个随机数,把随机数存到数组中,用这同一组随机数据分别进行四种排序,直接插入排序、直接选择排序、冒泡排序和快速排序。还通过了调用txt文件把运算所需时间导出,分别输出各个算法所需用时并对用时时长再进行冒泡排序算出用时最短的算法。2、程序代码:#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<windows.h>#include<time.h>#defineN30000voidWrong()/输入错误printf(&quo
2、t;n语法错误,请重新输入!n");getchar();voidDisp(inta)/清屏inti;system("cls");for(i=0;i<N;i+)if(i-1)%10=9)printf("n");printf("%-7d”,ai);voidInsertSort(inta,intp)/直接插入排序算法inti,j,temp;for(i=1;i<N;i+)temp=ai;for(j=i;j>0&&aj-1>temp;j-)aj=aj-1;aj=temp;voidSelectSort(in
3、ta,intp)/选择排序算法(inti,j,k;for(i=0;i<N-1;i+)(k=i;for(j=i+1;j<N;j+)if(a亦ak)k=j;if(k!=i)(inttemp;temp=ak;ak=ai;ai=temp;voidBubbleSort(inta,intp)/冒泡排序算法(inti,j,temp;for(i=0;i<N-1;i+)(for(j=N-1;j>i;j-)/比较,找出本趟最小关键字的记录if(aj<aj-1)(temp=aj;/进行交换,将最小关键字记录前移aj=aj-1;aj-1=temp;voidquicksort(inta,i
4、ntn,intp)快速排序算法(inti,j,low,high,temp,top=-1;structnode(intlow,high;stN;top+;sttop.low=0;sttop.high=n-1;while(top>-1)(low=sttop.low;high=sttop.high;top-;i=low;j=high;if(low<high)(temp=alow;while(i!=j)(while(i<j&&aj>temp)j-;if(i<j)(ai=aj;i+;while(i<j&&ai<temp)i+;if
5、(i<j)(aj=ai;j-;ai=temp;top+;sttop.low=low;sttop.high=i-1;top+;sttop.low=i+1;sttop.high=high;doubleTInsertSort(inta,intp)/计算直接插入排序算法用时(inti;intbN;for(i=0;i<N;i+)bi=ai;LARGE_INTEGERm_liPerfFreq=0;QueryPerformanceFrequency(&m_liPerfFreq);LARGE_INTEGERm_liPerfStart=0;QueryPerformanceCounter(&a
6、mp;m_liPerfStart);InsertSort(b,p);LARGE_INTEGERliPerfNow=0;QueryPerformanceCounter(&liPerfNow);doubletime=liPerfNow.QuadPart-m_liPerfStart.QuadPart;time/=m_liPerfFreq.QuadPart;if(p!=6)Disp(b);getchar();printf("n用直接插入排序法用的时间为f秒;”,time);FILE*fp;fp=fopen("直接插入排序.txt”,"w”);for(i=0;i&l
7、t;N;i+)fprintf(fp,"%d",bi);fclose(fp);return(time);doubleTSelectSort(inta,intp)/计算选择排序用时inti;intbN;for(i=0;i<N;i+)bi=ai;LARGE_INTEGERm_liPerfFreq=0;QueryPerformanceFrequency(&m_liPerfFreq);LARGE_INTEGERm_liPerfStart=0;QueryPerformanceCounter(&m_liPerfStart);SelectSort(b,p);if(p!
8、=6)Disp(b);getchar();LARGE_INTEGERliPerfNow=0;QueryPerformanceCounter(&liPerfNow);doubletime=liPerfNow.QuadPart-m_liPerfStart.QuadPart;time/=m_liPerfFreq.QuadPart;printf("n用直接选择排序法用的时间为f秒;”,time);FILE*fp;fp=fopen("直接选择排序.txt”,"w”);for(i=0;i<N;i+)fprintf(fp,"%d",bi);fc
9、lose(fp);return(time);doubleTBubbleSort(inta,intp)/计算冒泡排序算法用时inti;intbN;for(i=0;i<N;i+)bi=ai;LARGE_INTEGERm_liPerfFreq=0;QueryPerformanceFrequency(&m_liPerfFreq);LARGE_INTEGERm_liPerfStart=0;QueryPerformanceCounter(&m_liPerfStart);BubbleSort(b,p);LARGE_INTEGERliPerfNow=0;QueryPerformanceC
10、ounter(&liPerfNow);doubletime=liPerfNow.QuadPart-m_liPerfStart.QuadPart;time/=m_liPerfFreq.QuadPart;if(p!=6)Disp(b);getchar();printf("n用冒泡排序法用的时间为f秒;”,time);FILE*fp;fp=fopen("冒泡排序.txt","w");for(i=0;i<N;i+)fprintf(fp,"%d”,bi);fclose(fp);return(time);doubleTquickso
11、rt(inta,intn,intp)/计算快速排序算法用时inti;intbN;for(i=0;i<N;i+)bi=ai;LARGE_INTEGERm_liPerfFreq=0;QueryPerformanceFrequency(&m_liPerfFreq);LARGE_INTEGERm_liPerfStart=0;QueryPerformanceCounter(&m_liPerfStart);quicksort(b,N,p);LARGE_INTEGERliPerfNow=0;QueryPerformanceCounter(&liPerfNow);doubleti
12、me=liPerfNow.QuadPart-m_liPerfStart.QuadPart;time/=m_liPerfFreq.QuadPart;if(p!=6)Disp(b);getchar();printf("n用快速排序法用的时间为f秒;”,time);FILE*fp;fp=fopen("快速排序.txt","w");for(i=0;i<N;i+)fprintf(fp,"%d",bi);fclose(fp);return(time);voidBubleSort(doublea)/时间数组的冒泡排序inti,j;d
13、oubletemp;for(i=1;i<6;i+)for(j=4;j>=i;j-)if(aj+1<aj)temp=aj+1;aj+1=aj;aj=temp;voidmenu()(printf("*nn");printf("(1)显示随机数n");printf("(2)直接插入排序n");printf("(3)直接选择排序n");printf("(4)冒泡排序n");printf("(5)快速排序n");printf("(6)时间效率比较n"
14、;);printf("n请在上述序号中选择一个并输入:n");printf("*n");voidmain()(inti,p,aN;srand(int)time(NULL);/随机种子for(i=0;i<N;i+)ai=rand()%50000+1;while(1)(system("cls");menu();scanf("%d”,&p);if(p=0)(printf(-谢谢使用!n");getchar();break;doubleTIMES5,TIMES15;/时间数组switch(p)(case1:D
15、isp(a);FILE*fp;fp=fopen("随机数.txt”,"w”);for(i=0;i<N;i+)fprintf(fp,"%d",ai);fclose(fp);getchar();printf(-n请按任意键继续!");getchar();break;case2:TInsertSort(a,p);printf(-n请按任意键继续!");getchar();break;case3:TSelectSort(a,p);printf(-n请按任意键继续!");getchar();break;case4:TBubble
16、Sort(a,p);printf(-n请按任意键继续!");getchar();break;case5:Tquicksort(a,N,p);printf(-n请按任意键继续!");getchar();break;case6:system("cls");TIMES11=TIMES1=TInsertSort(a,p);TIMES12=TIMES2=TSelectSort(a,p);TIMES13=TIMES3=TBubbleSort(a,p);TIMES14=TIMES4=Tquicksort(a,N,p);getchar();BubleSort(TIMES
17、);printf("nn");(printf("排序这组数据较快的排序法是:n");if(TIMES1=TIMES11)printf("直接插入排序:%f秒!n”,TIMES1);if(TIMES1=TIMES12)printf("直接选择排序:%f秒!n”,TIMES1);if(TIMES1=TIMES13)printf("冒泡排序:%f秒!n”,TIMES1);if(TIMES1=TIMES14)printf("快速排序:%f秒!n”,TIMES1);if(TIMES1!=TIMES2)(if(TIMES2=T
18、IMES11)printf("直接插入排序:f秒!n”,TIMES2);if(TIMES2=TIMES12)printf("直接选择排序%f秒!n”,TIMES2);if(TIMES2=TIMES13)printf("冒泡排序%f秒!n”,TIMES2);if(TIMES2=TIMES14)printf("快速排序%f秒!n”,TIMES2);printf(-n请按任意键继续!");srand(int)time(NULL);for(i=0;i<N;i+)ai=rand()%30000+1;getchar();break;default:Wrong();printf(-n请按任意键继
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45413-2025供水管网水锤监测系统通用技术要求
- GB/T 22939.1-2025家用和类似用途电器包装第1部分:通用要求
- 奥鹏网络安全
- 光伏防火培训课件
- 《当代少先队教育导论》课件-【第9章】 红领巾奖章教育
- 运费清算协议书模板
- 海边安全协议书
- 乡村特色产业扶贫协议
- 钉钉办公软件培训
- 遗失车位协议书范本
- 工匠学院工作总结
- 吞食异物的急救要点和处置措施
- 骨科手术的围手术期疼痛管理
- 包车客运可行性方案
- DB32/T+4638-2024+智能泵站技术导则
- 800万吨年混合原油常减压蒸装置设计
- 扁鹊治病课本剧剧本
- PCT申请进入国家阶段的程序及实务操作
- 教师教学中分层布置作业现状的调查问卷
- 招商引资培训课件-招商引资讲课
- 走进神奇的中药学习通章节答案期末考试题库2023年
评论
0/150
提交评论