ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:132.45KB ,
资源ID:18776132      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18776132.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计各种排序算法比较附带源代码Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计各种排序算法比较附带源代码Word下载.docx

1、且子程序只有在被调用时才会运行大大节约系统资源减少了运算时间。同时由于功能的隔离使得程序的扩展性大大提高,无论程序将要任何改动时,都会方便很多。源代码#includetime.hstdlib.hint a30000;int choice;int choice1;struct xlx int key; int link; aa30000;int aaa300000;void main1();/*直接插入排序函数*/void direct(int a)printf(n现在使用直接插入排序法进行排序:n);int i,j,w; for(i=0;i=0;j-) if(aj=aj+1) w=aj; aj

2、=aj+1; aj+1=w; /*冒泡排序函数*/void bubble_sort(int a) printf(n下面使用冒泡排序法进行排序: int i,j,w; for(j=0;jaj+1) /*选择排序*/void choices_sort(int a) printf(n现在使用选择排序法进行排序: int i,j,k,t; k=i; for(j=i+1; if(akaj) k=j; t=ai; ai=ak; ak=t;/*快速排序*/ quick(int first,int end,int L) int left=first,right=end,key; key=Lfirst; whi

3、le(leftright) while(left=key) right-; if(left Lleft+=Lright; while(left(Lleft left+;right)Lright-=Lleft; Lleft=key; return left;void quick_sort(int L,int first,int end) int split; if(firstend) split=quick(first,end,L); quick_sort(L,first,split-1); quick_sort(L,split+1,end);/*堆排序*/void sift(int *x, i

4、nt n, int s) int t, k, j; t = *(x+s); /*暂存开始元素*/ k = s; /*开始元素下标*/ j = 2*k + 1; /*右子树元素下标*/ while (jn) if (jn-1 & *(x+j) *(x+j+1) /*判断是否满足堆的条件:满足就继续下一轮比较,否则调整。*/ j+; if (t i-) sift(x,n,i); /*初始建堆*/ for (k=n-1; k=1; k-) t = *(x+0); /*堆顶放到最后*/ *(x+0) = *(x+k); sift(x,k,0); /*剩下的数再建堆*/ /*归并排序*/int list

5、merge(struct xlx list,int first,int second)/*递归传递*/int start=30000;while(first!=-1&second!=-1)if(listfirst.key=upper)return lower;elsemiddle=(lower+upper);return listmerge(list,rmerge(list,lower,middle), rmerge(list,middle+1,upper);/*时间计算函数*/void timer(int choice)double t1,t2,t;int i;t1=(double) clo

6、ck();if(choice=1) direct(a);if(choice=2) bubble_sort(a);if(choice=3) choices_sort(a);if(choice=4) n现在使用快速排序法进行排序: quick_sort(a,0,29999);if(choice=5) heap_sort(a,30000);if(choice=6) rmerge(aa,0,29999);t2=(double) clock();t=difftime(t2,t1)/1000;for(i=0;%d ,ai);n排序结束您所用排序时间为:%f秒n,t);/*菜单函数*/void menu(i

7、nt choice1) int i;if (choice1=1)=30000; ai=aaai; aai.key=aaai; main1();if (choice1=2)谢谢使用,再见!/*生成随机数函数*/void sjs() int i=0,j,b,h,l;请输入你所期望的将要生成随机数的取值范围:最小值(不能为负数): scanf(%d,&l);最大值(无上限):h); srand( (int) time(0); b=rand(); if(b=l&b=h) ai=b; aai.key=b; aaai=b; i+; printf(void main1()nn请选择你所希望使用的排序方法:n

8、n1。直接插入排序n2。冒泡排序n3。选择排序n4。快速排序n5。堆排序n6。归并排序nscanf(choice);timer(choice);nn排序完毕,请选择下一步您要完成的工作:nn1.返回选择另一种排序方法排序n2.退出nchoice1);menu(choice1);/*主函数*/void main()sjs();main1(); for (k=n-1; void time(int choice) double t1,t2,t;time(choice);运行结果分析生成30000个随机数选择使用排序算法直接排序排序所用时间冒泡排序所用时间选择排序所用时间快速排序所用时间 堆排序所用时

9、间各排序排序时间分别为:直接排序:3.448秒冒泡排序:3.76秒选择排序:1.575秒快速排序:0.00秒堆排序:0.016秒归并排序:7.487秒(注:此处快速排序并非排序时间为0,而是时间很短在表示范围外,当实验数据扩大到一定数值后会有相应时间显示)通过数据不难看出6种排序方法处理一组相同数据时,快速排序处理速度最快堆排序次之,归并排序最慢。六课设心得整个程序前前后后整整用了一个星期,每天只要有空闲时间就在翻书本,画流程图,写代码,反反复复一点一点。一个星期的编写让我进步不少,心得也不少,但是说实话让我认识最深的是四点,刻骨铭心:对于编程来说看书很重要,但实实在在的动手去编才是王道!任何程序想要写起来不被自己搞晕,就一定要画流程图,省时省事!编程一定养成良好的编程习惯,无论命名还是结构!任何程序算法是灵魂,程序的好坏很大部分取决于算法,只是一组数的排序差别就如此之大,跟别说一个比排序负责多倍的排序!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1