- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从大到小的序列为:(89,78,75,71,68,44,33,14,8) 练习: 已知待排序的序列为(503,87,512,61,908,170,897,275,653,462)。(1)建立一个堆(画出第一步和最后堆的结果图),希望先输出最小值。(2)输出最小值后,如何得到次小值。(并画出相应结果图) 10.5 归并排序 基本思想:把k(k≥2)个有序子文件合并在一起,形成一个新的有序文件。同时归并k个有序子文件的排序过程称为k-路归并排序。 2-路归并排序: 归并2个有序子文件的排序。 例. 将有序文件A和A归并为有序文件C。 A=(2,10,15,18,21,30) B=(5,20,35,40) 按从小至大的次序从A或B中依次取出 2,5,10,15,...,40, 顺序归并到C中,得: C=(2,5,10,15,18,20,21,30,35,40) 一般地,2-路归并过程为: 假定文件r[low..high]中的相邻子文件(子表) (r[low],r[low+1],...,r[mid])和(r[mid+1],...,r[high]) 为有序子文件,其中:low≤midhigh 。 将这两个相邻有序子文件归并为有序文件y[low..high],即: (y[low],y[low+1],...,y[high]) 06 08 15 40 07 09 20 22 r[9..16] 9 10 11 12 13 14 15 16 06 07 08 09 15 20 22 40 y[9..16] 9 10 11 12 13 14 15 16 2-路归并 有序文件(表) i→ j→ k→ 例 有序 子表 有序 子表 将两个有序子文件归并为有一个有序文件的算法 void merge(r,y,low,mid,high) RecType r[],y[];int low,mid,high; { int k=i=low,j=mid+1; while (i=mid j=high) { if (r[i].key=r[j].key) { y[k]=r[i]; //归并前一个子文件的记录 i++;} else { y[k]=r[j]; //归并后一个子文件的记录 j++;} k++; } while (j=high) //归并后一个子文件余下的记录 { y[k]=r[j]; j++; k++; } while (i=mid) //归并前一个子文件余下的记录 { y[k]=r[i]; i++; k++; } } // merge 2-路归并排序 假定文件(r[1],r[2],...,r[n])中记录是随机排列的,进行2-路归并排序,首先把它划分为长度均为1的n个有序子文件,然后对它们逐步进行2-路归并排序。其步骤如下: 第1趟:从r[1..n]中的第1个和第2个有序子文件开始,调用算法merge,每次归并两个相邻子文件,归并结果放到y[1..n]中。在y中形成 ?n/2? 个长度为2的有序子文件。若n为奇数,则y中最后一个子文件的长度为1。 第2趟:把y[1..n]看作输入文件,将 ?n/2? 个有序子文件两两归并,归并结果回送到r[1..n]中,在r中形成 ??n/2?/2?个长度为4的有序子文件。若y中有奇数个子文件,则r中最后一个子文件的长度为2。 ...... 共计经过 ?log2n? 趟归并,最后得到n个记录的有序文件。 06 44 20 10 02 20 08 07 1 2 3 4 5 6 7 8 r[1..8] 06 44 10 20 02 20 07 08 1 2 3 4 5 6 7 8 y[1..8] 06 10 20 44 02 07 08 20 1 2 3 4 5 6 7 8 r[1..8] 02 06 07 08 10 20 20 44 1 2 3 4 5 6 7 8 y[1..8] 第1趟 第3趟 第2趟 例1.对8个记录作2路归并排序,共进行?log28?=3 趟归并。 例2. 对11个记录作2-路归并排序,进行?log211?=4趟归并。 06 44 20 10 02 20 08 07 05 32 14 1 2 3 4 5 6 7 8 9 10 11 r[1..11] 06 44
您可能关注的文档
最近下载
- 2025年云南省地质灾害治理验收规程.pdf VIP
- 网店推广认知—网店推广新技术.pptx VIP
- BS EN 62381-2012 流程工业自动化系统-工厂验收测 试(FAT)、现场验收测试(SAT)和现场集成测 试(SIT).pdf VIP
- 高分子材料化学试题3试题及答案.docx VIP
- 初中历史人教版(部编)第9课 秦统一中国部优课件.pptx VIP
- 11、飞行管理、导航试题及答案.docx VIP
- 小学英语语法some和any练习题.pdf VIP
- 供货意向协议书样本.docx VIP
- 南京工业大学2019-2020_一_物化试卷A试卷.docx VIP
- 九江学院2017—2018 学年度第一学期(期末)考试《大学语文》试卷.doc VIP
原创力文档


文档评论(0)