- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一章排序
第3章 排 序 理解递归排序算法Msort 第7次上机作业 1.实现双向链表的插入、删除、输出元素。 2. 实现归并排序。 * * 排序本身涉及的数据结构类型比较单纯,所用的存储结构为顺序表。把排序的内容安排在第 2 章的线性表之后,可巩固第 2 章所学的知识,也有利算法分析能力的提高。 其中有些排序的内容需要树的知识做基础,这些内容被安排在第 6 章来继续学习。例如,堆排序的实现放到 “二叉树的应用”一节;归并排序的跟读需要借助“二叉树遍历”的知识做铺垫等。 讲授本章课程大约需6课时。 3.3 先进排序方法 三、内部排序的方法 内部排序的过程是一个逐步扩大 记录的有序序列长度的过程。 经过一趟排序 有序序列区 无 序 序 列 区 有序序列区 无 序 序 列 区 二、归并排序 归并排序的过程基于下列基本思想进行: 将两个或两个以上的有序子序列 “归并” 为一个有序序列。 在内部排序中,通常采用的是2-路归并排序。即:将两个位置相邻的记录有序子序列 归并为一个记录的有序序列。 有 序 序 列 R[l..n] 有序子序列 R[l..m] 有序子序列 R[m+1..n] 这个操作对顺序表而言,是轻而易举的。 void Merge (RcdType SR[], RcdType TR[], int i, int m, int n) { // 将有序的记录序列 SR[i..m] 和 SR[m+1..n] // 归并为有序的记录序列 TR[i..n] } // Merge for (j=m+1, k=i; i=m j=n; ++k) { // 将SR中记录由小到大地并入TR if (SR[i].key=SR[j].key) TR[k] = SR[i++]; else TR[k] = SR[j++]; } … … // 处理某一个表的剩余尾部 if (i=m) TR[k..n] = SR[i..m]; // 将剩余的 SR[i..m] 复制到 TR if (j=n) TR[k..n] = SR[j..n]; // 将剩余的 SR[j..n] 复制到 TR 处理某一个表的剩余尾部代码段: 归并排序的算法 如果记录无序序列 R[s..t] 的两部分 R[s..?(s+t)/2?] 和 R[?(s+t)/2?+1..t] 已经分别按关键字有序, 则利用上述归并算法很容易将它们归并成整个记录序列是一个有序序列。 由此,应该先分别对这两部分进行 2-路归并排序。 例如: 52, 23, 80, 36, 68, 14 (s=1, t=6) [ 52, 23, 80] [36, 68, 14] [ 52, 23][80] [ 52] [ 23, 52] [ 23, 52, 80] [36, 68][14] [36][68] [36, 68] [14, 36, 68] [ 14, 23, 36, 52, 68, 80 ] [23] void Msort ( RcdType SR[], RcdType TR1[], int s, int t ) { // 将SR[s..t] 归并排序为 TR1[s..t] if (s= =t) TR1[s]=SR[s]; else { } } // Msort … … // 归并排序的主要操作 m = (s+t)/2; // 将SR[s..t]平分为SR[s..m]和SR[m+1..t] Msort (SR, TR2, s, m); // 递归地将SR[s..m]归并为有序的TR2[s..m] Msort (SR, TR2, m+1, t); //递归地SR[m+1..t]归并为有序的TR2[m+1..t] Merge (TR2, TR1, s, m, t); // 将TR2[s..m]和TR2[m+1..t]归并到TR1[s..t] 归并排序主要操作的代码段: void MergeSort (SqList L) { // 对顺序表 L 作2-路归并排序 MSort(L.r, L.r, 1,
您可能关注的文档
最近下载
- 宫腔镜电切手术护理.pptx VIP
- 2025年低压电工操作证基础知识题库及答案(共600题).docx
- (2025春新版本)人教版七年级生物下册《 植株的生长》PPT课件.pptx VIP
- 灰姑娘英文剧本.doc
- (2025春)人教版七年级生物下册《 水的利用与散失》PPT课件.pptx VIP
- 部编版语文四年级下册第三单元教材解读大单元集体备课.pptx VIP
- 腕管综合征常见疾病康复22课件讲解.pptx
- 电机与拖动(第4版)配套教材电子课件(完整版).pptx
- (2025春新版本)人教版七年级生物下册《 水的利用与散失》PPT课件.pptx VIP
- rfc_793(tcp传输控制协议).pdf
文档评论(0)