版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计报告PAGE5数据结构课程设计实验报告姓名:顾云康学号:E1114300指导老师:王爱平日期:2013.10.8目录1课程设计的目的 32需求分析 33课程设计报告内容 33.1概要设计 33.2详细设计 43.3调试分析 124总结 135程序清单 146参考文献 147程序运行结果 14附录 15 clock_tbegin3,end3;doublecost3;begin3=clock(); insertSort(number3,MAX); end3=clock(); cost3=(double)(end3-begin3)/CLOCKS_PER_SEC; //梳排序并计算时间 clock_tbegin4,end4;doublecost4;begin4=clock(); combsort(number4,MAX); end4=clock(); cost4=(double)(end4-begin4)/CLOCKS_PER_SEC;for(intj=0;j<MAX;j++) { printf("%d",number1[j]); }printf("\n");printf("排序完成!\n");printf("快速排序耗时:%lfseconds\n",cost1);printf("冒泡排序耗时:%lfseconds\n",cost2);printf("插入排序耗时:%lfseconds\n",cost3);printf("梳排序耗时:%lfseconds\n",cost4); return0;}插入排序函数:voidinsertSort(inta[],intlen){ inti,j,temp; for(i=1;i<len;i++) { temp=a[i]; for(j=i-1;j>=0;j--) { if(a[j]>temp) { a[j+1]=a[j]; }else { break; } } a[j+1]=temp; }}冒泡排序函数:voidBubble(inta[],intlen){ intlength=len;inti=0;intj=0;for(;i<len;i++) { for(;j<length;j++) { if(a[j]>a[j+1]) { inttemp=a[j];a[j]=a[j+1];a[j+1]=temp; } }length--;j=0; }}快速排序函数:intpartions(intl[],intlow,inthigh){ intprvotkey=l[low];l[0]=l[low];while(low<high) { while(low<high&&l[high]>=prvotkey) --high;l[low]=l[high];while(low<high&&l[low]<=prvotkey) ++low;l[high]=l[low]; }l[low]=l[0];returnlow;}voidqsort(intl[],intlow,inthigh){ intprvotloc;if(low<high) { prvotloc=partions(l,low,high);//将第一次排序的结果作为枢轴qsort(l,low,prvotloc-1);//递归调用排序由low到prvotloc-1qsort(l,prvotloc+1,high);//递归调用排序由prvotloc+1到high }}voidquicksort(intl[],intn){ qsort(l,1,n);//第一个作为枢轴,从第一个排到第n个}梳排序函数:voidcombsort(inta[],intn){ floatshrink_factor=1.3;intgap=n,swapped=1,swap,i;while((gap>1)||swapped) { if(gap>1)gap=gap/shrink_factor;swapped=0;i=0;while((gap+i)<n) { if(a[i]-a[i+gap]>0) { swap=a[i];a[i]=a[i+gap];a[i+gap]=swap;swapped=1; }++i; } }}3.3调试分析(1)使用随机数产生函数,产生40000个随机数,再使用四种算法进行排序,并统计各种算法统计时间。运行截图如下:(3)由多次试验结果可得,梳排序和快速排序的排序速度相对较快。4总结通过这次课程设计我认识到了排序功能在解决实际问题中的作用,使我对数据结构的学习有了更进一步的理解。在完成本次课程设计中,我发现很多理论性知识在实际使用时与单纯的理论还是有所差别的,今后我会更加注重培养自己的实践动手能力。5程序清单见附录6参考文献[1]严蔚敏,吴伟民编著.数据结构(C语言版)--北京:清华大学出版社,2007.[2]严蔚敏,吴伟民米宁编著.数据结构题集(C语言版)--北京:清华大学出版社,2007.[3]/wiki/%E6%A2%B3%E6%8E%92%E5%BA%8F7程序运行结果附录程序清单:#include"stdafx.h"#include<stdio.h>#include<stdlib.h>#include<time.h>/*用到了time函数,所以要有这个头文件*/#defineMAX40000//插入排序voidinsertSort(inta[],intlen){ inti,j,temp; for(i=1;i<len;i++) { temp=a[i]; for(j=i-1;j>=0;j--) { if(a[j]>temp) { a[j+1]=a[j]; }else { break; } } a[j+1]=temp; }}//冒泡排序voidBubble(inta[],intlen){ intlength=len;inti=0;intj=0;for(;i<len;i++) { for(;j<length;j++) { if(a[j]>a[j+1]) { inttemp=a[j];a[j]=a[j+1];a[j+1]=temp; } }length--;j=0; }}//快速排序intpartions(intl[],intlow,inthigh){ intprvotkey=l[low];l[0]=l[low];while(low<high) { while(low<high&&l[high]>=prvotkey) --high;l[low]=l[high];while(low<high&&l[low]<=prvotkey) ++low;l[high]=l[low]; }l[low]=l[0];returnlow;}voidqsort(intl[],intlow,inthigh){ intprvotloc;if(low<high) { prvotloc=partions(l,low,high);//将第一次排序的结果作为枢轴qsort(l,low,prvotloc-1);//递归调用排序由low到prvotloc-1qsort(l,prvotloc+1,high);//递归调用排序由prvotloc+1到high }}voidquicksort(intl[],intn){ qsort(l,1,n);//第一个作为枢轴,从第一个排到第n个}//梳排序voidcombsort(inta[],intn){ floatshrink_factor=1.3;intgap=n,swapped=1,swap,i;while((gap>1)||swapped) { if(gap>1)gap=gap/shrink_factor;swapped=0;i=0;while((gap+i)<n) { if(a[i]-a[i+gap]>0) { swap=a[i];a[i]=a[i+gap];a[i+gap]=swap;swapped=1; }++i; } }}intmain(){ intnumber[MAX]={0}; intnumber1[MAX]={0}; intnumber2[MAX]={0}; intnumber3[MAX]={0}; intnumber4[MAX]={0};inti;srand((unsigned)time(NULL));/*播种子*/for(i=0;i<MAX;i++) { number[i]=rand()%20000;/*产生101以内的随机整数*/number1[i]=number2[i]=number3[i]=number4[i]=number[i];while(number[i]==0) { number[i]=rand()%20000; number1[i]=number2[i]=number3[i]=number4[i]=number[i]; } }//快速排序并计算时间 clock_tbegin1,end1;doublecost1;begin1=clock(); quicksort(number1,MAX); end1=clock(); cost1=(double)(end1-begin1)/CLOCKS_PER_SEC;//冒泡排序并计算时间 clock_tbegin2,end2;doublecost2;begin2=clock(); Bubble(number2,MAX); end2=clock(); cost2=(double)(end2-begin2)/CLOCKS_PER_SEC; //插入排序并计算时间 clock_tbegin3,end3;doublecost3;begin3=clock(); insertSort(number3,MAX); end3=clock(); cost3=(double)(end3-begin3)/CLOCKS_PER_SEC; //梳排序并计算时间 clock_tbegin4,end4;doublecost4;begin4=clock(); combsort(number4,MAX); end4=clock(); cost4=(double)(end4-begin4)/CLOCKS_P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《医疗器械经营质量管理规范》培训试卷及答案
- 某酿酒厂生产管理规范
- 留置看护岗位招聘笔试真题试卷(含完整答案解析)
- 2025年大学第三学年服装与服饰设计专业服装立体裁剪阶段测试试题及答案
- 物流行业仓储配送一体化解决方案
- 九年级化学·水的组成及变化探究:基于循证与模型认知的跨学科导学案
- 高中二年级物理《磁感应强度 磁通量》教学设计
- 小学三年级英语《Unit 10 My Class Lesson 55》探究式教学设计
- 高中物理三年级“内能”专题复习拔高教学设计
- 高三语文“得失之间”思辨性写作专题教学设计
- 2026银行遴选面试题及答案
- 2026乌鲁木齐城市轨道集团招聘(191人)笔试参考题库及答案详解
- 2026年非遗文化赋能数字化乡村振兴现状调研报告
- 华中科技大学2026年强基计划校考(面试+体育测试)模拟试题及答案解析
- 2026年人教版高一第二学期地理期末普通高中统考试卷(附答案可下载)
- 2026贵州毕节黔西市粮油购销有限公司面向社会公开招聘工作人员3人考试模拟试题及答案详解
- 2026年四川省拟任县处级领导干部理论(任职资格考试)练习题及答案
- 2025年安徽九华山旅游发展股份有限公司招聘66人模拟试卷附答案
- 2023学年度高一下学期班主任工作总结
- 绿化苗木主材采购(供货计划、售后服务承诺)
- YY/T 0696-2021神经和肌肉刺激器输出特性的测量
评论
0/150
提交评论