排序算法性能分.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2011年春季学期 数据结构课程设计 题 目: 专业班级: 姓 名: 学 号: 指导教师: 成 绩:_____________________ 目 录 摘要 3 前言 4 正文 5 1. 采用类c语言定义相关的数据类型 5 2. 各模块的伪码算法 5 3. 函数的调用关系图 6 4. 调试分析 7 a、 调试中遇到的问题及对问题的解决方法 7 b、 算法的时间复杂度和空间复杂度 7 5. 源程序 8 总结 13 参考文献 14 致 谢 15 摘要 排序是计算机程序设计中的一种重要操作。各种部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。 关键字:排序,性能分析。 前言 排序是计算机程序设计中的一种重要操作。它的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。内部排序的方法很多,但是就其全面性能而言,很难 提出一种被认为是最好的方法,每一种方法都有各自的优缺点,适合在不同的环境下使用。如果按排序过程中依据的不同原则对内部排序方法进行分类,则大致可分为插入排序,交换排序,选择排序,归并排序和记数排序等五类。 这几种排序算法是在顺序存储结构上实现的,因此在排序过程中需要进行大量记录的移动。当记录很大时,时间耗费很大,此时可采用静态链表作存储结构。但是有的排序方法,无法实现表排序。在这种情况下可以进行地址排序,即另设一个地址向量指示相应记录。 正文 采用类c语言定义相关的数据类型 int整型, char字符型, 各模块的伪码算法 (1)插入排序伪码算法: void InsertSort(SplistL){ for(i=2;i=L.length;++i) if(LT(L.r[i].key,L.r[i-1].key))  //“《”,须将L.r[i]插入有序子表 { L.r[0]= L.r[i];         //复制为哨兵 L.r[i]= L.r[i-1]; For(j)i-2;LT(L.r[0].key,L.r[j].key);--j) L.r[j+1]= L.r[j];         //记录后移 L.r[j+1]= L.r[0]; //插入到正确位置 } }//InsertSort (2) 希尔排序 void shllInsert(Splist L,int dk){ for(i=dk+1;i=L.length;++i) if(LT(L.r[i].key,L.r[i-dk].key)) { L.r[0]= L.r[i];           //暂存 for(j=i-dk;j0LT(L.r0].key,L.r[j].key);j-=dk) L.r[j+dk]=L.r[j];       //记录后移 L.r[j+dk]=L.r[0];} //插入 }//shellsort void shllsort (Splist L,int data[],int t){ for(k=0;kt;++k) shllInsert(L,data[k]); }//shellsort (3)快速排序 int part(sqlistL,int low, int high){ // 交换顺序表L中子表L。R[low..high]的记录,使枢轴记录到位,并返回其所在位  // 此时在它之前(后)的记录均不大(小)于它。 pivotkey=L.[Low].key; while(loehigh){ While(lowhighl.r[high].key=pivotkey) --high; L.r[low L.r[high]; while(lowhighl.r[low].key=pivotkey) ++low; L.r[low L.r[high]; } return low }//partition (4) 选择排序 void selectsort(splistL){ for(i=1;iL.length;++i){ j=selectMinKey(L,i); if(i!=j) L.r[i]

文档评论(0)

mei1809816wei + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档