大数据结构课程设计排序算法比较_第1页
大数据结构课程设计排序算法比较_第2页
大数据结构课程设计排序算法比较_第3页
大数据结构课程设计排序算法比较_第4页
大数据结构课程设计排序算法比较_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XXXXX双学数据结构课程设计报告排序算法比较一、需求分析二、程序的主要功能三、程序运行平台四、数据结构五、算法及时间复杂度六、测试用例七、程序源代码二感想体会与总结排序算法比较一、需求分析利用随机函数产生N个随机整数(N=500,1000,1500,2000,2500,30000),利用直接插入排序、折半插入排序,起泡排序、快速排序、选择排序、堆排序,基数排序七种排序方法(可添加其它排序方法)进行排序(结果为由小到大的顺序),并统计每一种排序所耗费的时间(统计为图表坐标形式)。二、程序的主要功能.用户输入任意个数,产生相应的随机数.用户可以自己选择排序方式(直接插入排序、折半插入排序、起泡排

2、序、快速排序、选择排序、堆排序、基数排序)的一种.程序给出原始数据、排序后从小到大的数据,并给出排序所用的时间。三、程序运行平台VisualC+版本四、数据结构本程序的数据结构为线形表,线性顺序表、线性链表。O1、结构体:typedefstruct口用时各个算法排序用时0.2 u=0.01G-1E-Q50.010或推入庠忻后插入3序起:泡排营I,国画专金捽排丁号屋羲希口用的|IL加|5219|U.TMUJ1B0-391E-0S0,U16算法腔岸法推序比较系统IJT 一二三 用黑入入ttt窄徘徘韭孑*速出宜嘉快霍基退12345678殖输入要排序的元素T数N:50g0插入排序31098279239

3、16261821902?45832239911353S72037013877282951768fi24037285264281652E9G01012762617157273748411S93844932768278732993519109257395584259232849916731685B2S2S726040227699223343S11158156061946319FSS弓M232H2291929R2935*i16839988761929463219目25316152718252209491159311849158820920S47R82753059223421571823M170962

4、B3S12544216467183662A17S24691375817780230353103321561B&B&1208315758241号E2551912345678二;S-HJII直需快选堆基退入入tfF1JTI-二le.3、系统将随机数排序后整齐的显示出来。2960829&1329614296172961729621296432965G29657296582966929681298129704297312973329734297442974?2?5629761Z9763297682976829777297B92979029795298122981529832298332?8492985

5、5298552985729B59N986E29S6929Sg92987329876298812989129897299A129909299102?1629929299352?942299422994?29954Z995&29959299E229972299752997729979299BC2999329996360033003230B37300383Q041300483904930M2390G63308930B9330酎6301043Q10&301B?301142B119301343013730145301g930175301S0301883取触301913019530211302123目22

6、1独227302273B2313923S3024530259102603027038271303003630130363303083032330333303353033&30338303453B35930377304063GH123B4233B424384323必53046&3047030470304993居毗3951030511305193&2330524305273115363Q5483匣BG305683B5743058130591306143062338624306303B643396543866430665306743069339&9S307123m430721307313073230

7、74230771307743077530783307863078730792307923080630807308113D81430816308333B8333083630836308374、用户可以选择继续排序或者退出系统。七、程序源代码/*第六题:排序算法比较设计要求:利用随机函数产生N个随机整数(N=500,1000,1500,2000,2500,30000),利用直接插入排序、折半插入排序,起泡排序、快速排序、|选择排序、堆排序,基数排序七种排序方法(可添加其它排序方法)进行排序(结果为由小到大的顺序),并统计每一种排序所耗费的时间(统计为图表坐标形式)。*/#include#inclu

8、de#includehigh中折半查找有序插入的位置mid=(low+high)/2;if0mid)high的记录,使得枢轴记录到位,并返回其所在位置,此时在它之前(后)的记录均不大于它intpivotkey;i中最后一个记录互换1=i;i=t;HeapAdjust(L,1,i-1);i-1重新调整为大顶堆returnOK;/*/基数排序/*typedefstructnodeintkey;node*next;RecType;StatusRadixSort(SqlistL)intt,i,j,k,d,n=1,m;RecType*p,*s,*q,*head10,*tail10;/定义各链队的首尾指针

9、for(i=1;ikey=i;if(i=1)/当为第一个元素时q=s;p=s;t+;elseq-next=s;/将链表连接起来q=s;t+;q-next=NULL;d=1;while(n0)/将每个元素分配至各个链队for(j=0;jkey/d;k=k%10;if(headk=NULL)/进行分配headk=p;tailk=p;elsetailk-next=p;tailk=p;p=p-next;/取下一个待排序的元素p=NULL;/用于收集第一个元素时的判断for(j=0;jnext=headj;q=tailj;q-next=NULL;/最后一个结点的next置为空d=d*10;n=0;m=1

10、;while(mkey;i+;p=p-next;)returnOK;*/主函数/*voidmain()SqlistL;SqlistL0;InitSqlist(L);初始化LInitSqlist(L0);intm,i;charchoice=z;clock_tstart,finish;/定义clock_t用于计时doubleduration;向L中输入元素n printf( printf( printf(算法排序比较系统n);n);n);f(以下是各个排序算法的代号:nn);printf(1、直接插入排序n);printf(2、折半插入排序n);printf(3、起泡排序n);printf(4、快

11、速排序n);printf(5、选择排序n);printf(6、堆排序n);printf(7、基数排序n);8、退出该系统nn);printf(ScanfSqlist(m,L0);printf(1、直接插入排序n);printf(2、折半插入排序n);printf(3、起泡排序n);printf(n);printf(4、快速排序n);printf(5、选择排序n);printf(6、堆排序n);printf(7、基数排序n);printf(8、退出该系统nn);printf(n请选择排序的方式,数字1-7:);scanf(%d,&choice);选择排序方式赋值choice,用于后面的函数选择w

12、hile(choice8)printf(输入方式有误。n请输入1-7选择排序方式,或者选择8退出系统)scanf(%d,&choice);while(choice!=8)for(i=1;i=;i+)i=i;switch(choice)case1:/直接插入排序start=clock();InsertSort(L);finish=clock();break;case2:/折半插入排序start=clock();BInsertSort(L);finish=clock();break;case3:/起泡排序start=clock();BubbleSort(L);finish=clock();brea

13、k;case4:/快速排序start=clock();QuickSort(L);finish=clock();break;case5:/选择排序start=clock();ChooseSort(L);finish=clock();break;case6:/堆排序start=clock();HeapSort(L);finish=clock();break;case7:/基数排序start=clock();RadixSort(L);finish=clock();break;case8:/直接退出break;PrintfSqlist(m,L);/输出数据和L的长度duration=(double)(

14、finish-start)/CLOCKS_PER_SEC;/输出算术时间printf(n本次排序运算所用的时间是:%lfsecondsn,duration);printf(本次排序结束。n);printf(n);printf(继续本系统吗nn);printf(以下是各个排序算法的代号:n); TOC o 1-5 h z printf(1、直接插入排序n);printf(2、折半插入排序n);printf(3、起泡排序n);printf(4、快速排序n);printf(5、选择排序n);printf(6、堆排序n);printf(7、基数排序n);printf(8、退出该系统n);printf(n请请输入1-7选择排序方式,或者选择8退出系统:);scanf(%d,&choice);while(choice8)printf(输入方式有误。n请输入1-7选择排序方式,或者选择8退出系统);scanf(%d,&choice);感想体会与总结好的算法+编程技巧+高效率=好的程序。1、做什么都需要耐心,做设计写程序更需要耐心。一开始的时候,我写函数写的很快,可是等最后调试的时候发现错误很隐蔽,就很费时间了。后来我先在纸上构思出函数的功能和参数,考虑好接口之后才动手编,这样就比较容易成功了。2、做任何事情我决定都应该有个总体规划。之后的工作按照规划逐步展开完成。对于一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论