- 1、本文档共88页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从大到小的序列为:(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
您可能关注的文档
- 数据提供和指标说明.doc
- 数据操作,DML,Data Management Language详解.docx
- 数据支撑、高效服务.ppt
- 数据收集培训_CN_v1.2.ppt
- 数据收集与整理多种方法.ppt
- 数据校验手册.docx
- 数据核查变更维护工作操作流程.ppt
- 数据流程图+IPO结构化语言.pptx
- 数据流程图和业务流程图案例.doc
- 数据添加修改.pptx
- 六 、可能性说课(教学设计)-2024-2025学年数学四年级上册苏教版.docx
- 1.3 买文具(1)(教学设计)-2024-2025学年三年级上册数学北师大版.docx
- 【核心素养目标】第17课 国家出路的探索与列强侵略的加剧(教学设计).docx
- 2.2 细胞中的无机物教学设计-2023-2024学年高一上学期生物人教版(2019)必修一.docx
- Unit 4 Friends Forever Understanding ideas 教学设计-2023-2024学年高中英语外研版(2019) 必修第一册.docx
- 2023秋苏教版四年级科学上册 12点亮小灯泡 (表格教案).docx
- Unit 3 Would you like to come to my birthday party Lesson 15&16(教学设计)-2024-2025学年人教精通版英语六年级上册.docx
- there be的用法(教学设计)-2023-2024学年译林版(三起)英语六年级下册.docx
- 2.4细胞核是细胞生命活动的控制中心教学设计-2023-2024学年高一上学期生物浙科版必修1.docx
- 人教版(2019)选择性必修第三册Unit 1 Art Reading and Thinking公开课教学设计.docx
文档评论(0)