数据结构各种排序实验报告.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文档。上传文档
查看更多
数据结构各种排序实验报告

目 录 1.引言 4 2.需求分析 4 3.详细设计 4 3.1 直接插入排序 4 3.2折半排序 5 3.3 希尔排序 6 3.4简单选择排序 6 3.5堆排序 6 3.6归并排序 7 3.7冒泡排序 9 4.调试 10 5.调试及检验 11 5.1 直接插入排序 11 5.2折半插入排序 11 5.3 希尔排序 12 5.4简单选择排序 12 5.5堆排序 13 5.6归并排序 14 5.7冒泡排序 14 6.测试与比较 15 6.1调试步骤 15 6.2结论 16 7.实验心得与分析 16 8.附录 17 8.1直接插入排序 17 8.2折半插入排序 18 8.3希尔排序 20 8.4简单选择排序 22 8.5堆排序 23 8.6归并排序 26 8.7冒泡排序 29 8.8主程序 30 .需求分析 课程题目是排序算法的实现,课程设计一共要设计种排序算法。这种算法共包括:堆排序归并排序排序冒泡排序折半插入排序直接插入排序为了运行时的方便,将种排序方法进行编号,其中1为堆排序,2为归并排序,3为排序,4为冒泡排序,5为,6为,7为折半插入排序为直接插入排序。 软件环境 Windows-7操作系统,所使用的软件为; .概要设计 2.1 直接插入排序 ⑴算法思想:直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到一个已排好序的有序表中,从而得到一个新的、记录数增一的有序表。在自i-1起往前搜索的过程中,可以同时后移记录。整个排序过程为进行n-1趟插入,即:先将序列中的第一个记录看成是一个有序的子序列,然后从第二个记录起逐个进行插入,直至整个序列变成按关键字非递减有序序列为止。 ⑵程序实现及核心代码的注释: for (i = 1 ; i r.length ;++i ) for(j=0;j i;++j) if(r.base[i] r.base[j]) { temp = r.base[i]; //保存待插入记录 for(i= i ;i j; --i ) r.base[i] = r.base[i-1]; //记录后移 r.base[j] = temp; //插入到正确的为位置 } r.base[r.length] =\0; .2折半排序 ⑴算法思想:由于折半插入排序的基本操作是在一个有序表中进行查找和插入,这个“查找”操作可利用折半查找来实现,由此进行的插入排序称之为折半插入排序。折半插入排序所需附加存储空间和直接插入排序相同,从时间上比较,这般插入排序仅减少了关键字间的比较次数,而记录的移动次数 不变。因此,这般插入排序的时间复杂度仍为O(n2)。 ⑵程序实现及核心代码的注释: void zb(FILE *fp) { //对顺序表作折半插入排序 for ( i = 1 ; i r.length ; i++ ) { temp=r.base[i]; //将r.base[i]寄存在temp中 low=0; high=i-1; while( low = high ) //在base[low]到key[high]中折 半查找有序插入的位置 { m = (low+high)/2; //折半 if ( temp r.base[m] ) high = m-1; //插入低半区 else low = m+1; //插入高半区 } for( j=i-1; j=high+1; --j ) r.base[j+1]= r.base[j]; //记录后移 r.base[high+1]=temp; //插入 } .3 希尔排序 ⑴算法思想:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。其中,子序列的构成不是简单的“逐段分割”,而是将分隔某个“增量”的记录组成一个子序列。 ⑵程序实现及核心代码的注释

文档评论(0)

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

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

1亿VIP精品文档

相关文档