欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    一章排序.ppt

    • 资源ID:2657590       资源大小:485.51KB        全文页数:22页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    一章排序.ppt

    1,第3章 排 序,排序本身涉及的数据结构类型比较单纯,所用的存储结构为顺序表。把排序的内容安排在第 2 章的线性表之后,可巩固第 2 章所学的知识,也有利算法分析能力的提高。 其中有些排序的内容需要树的知识做基础,这些内容被安排在第 6 章来继续学习。例如,堆排序的实现放到 “二叉树的应用”一节;归并排序的跟读需要借助“二叉树遍历”的知识做铺垫等。 讲授本章课程大约需6课时。,2,3.3 先进排序方法,3,三、内部排序的方法,内部排序的过程是一个逐步扩大 记录的有序序列长度的过程。,经过一趟排序,有序序列区,无 序 序 列 区,有序序列区,无 序 序 列 区,4,二、归并排序,归并排序的过程基于下列基本思想进行: 将两个或两个以上的有序子序列 “归并” 为一个有序序列。,5,在内部排序中,通常采用的是2-路归并排序。即:将两个位置相邻的记录有序子序列,归并为一个记录的有序序列。,有 序 序 列 Rln,有序子序列 Rlm,有序子序列 Rm+1n,这个操作对顺序表而言,是轻而易举的。,6,void Merge (RcdType SR, RcdType &TR, int i, int m, int n) / 将有序的记录序列 SRim 和 SRm+1n / 归并为有序的记录序列 TRin / Merge,for (j=m+1, k=i; i=m , / 处理某一个表的剩余尾部,7,if (i=m) TRkn = SRim; / 将剩余的 SRim 复制到 TR,if (j=n) TRkn = SRjn; / 将剩余的 SRjn 复制到 TR,处理某一个表的剩余尾部代码段:,8,归并排序的算法,如果记录无序序列 Rst 的两部分 Rs(s+t)/2 和 R(s+t)/2+1t 已经分别按关键字有序, 则利用上述归并算法很容易将它们归并成整个记录序列是一个有序序列。,由此,应该先分别对这两部分进行 2-路归并排序。,9,例如:,52, 23, 80, 36, 68, 14 (s=1, t=6), 52, 23, 80 36, 68, 14, 52, 2380, 52, 23, 52, 23, 52, 80,36, 6814,3668,36, 68,14, 36, 68, 14, 23, 36, 52, 68, 80 ,23,10,void Msort ( RcdType SR, RcdType TR1, int s, int t ) / 将SRst 归并排序为 TR1st if (s= =t) TR1s=SRs; else / Msort, / 归并排序的主要操作,11,m = (s+t)/2; / 将SRst平分为SRsm和SRm+1t,Msort (SR, TR2, s, m); / 递归地将SRsm归并为有序的TR2sm Msort (SR, TR2, m+1, t); /递归地SRm+1t归并为有序的TR2m+1t,Merge (TR2, TR1, s, m, t); / 将TR2sm和TR2m+1t归并到TR1st,归并排序主要操作的代码段:,12,理解递归排序算法Msort,13,void MergeSort (SqList / MergeSort,可以得出,对 n 个记录进行归并排序的时间复杂度为(nlogn)。即: 每一趟归并的时间复杂度为 O(n), 总共需进行 log2n 趟。,14,(23,52),(23,52,80),(36,68),( 14, 23, 36, 52, 68, 80),(14,36,68),递归归并过程的展开与跟踪,15,15,1. 双向链表,五、其它形式的链表,typedef struct DuLNode ElemType data; / 数据域 struct DuLNode *prior; / 指向前驱的指针域 struct DuLNode *next; / 指向后继的指针域 DuLNode, *DuLinkList;,16,16,最后一个结点的指针域的指针又指回第一个结点的链表,2. 循环链表,和单链表的差别仅在于,判别链表中最后一个结点的条件不再是“后继是否为空”,而是“后继是否为头结点”。,17,17,在循环链表中,头指针也可以改变到指向尾结点,这样用一个头指针就能够控制首位两端,可为有些操作带来便利。,18,18,双向循环链表,空表,非空表,19,19,双向链表的操作特点:,“查询” 和单链表相同。,“插入” 和“删除”时需要同时修改两个方向上的指针。,由于前驱指针的设置,如需要前驱的位置信息时,可直接使用,避免了遍历操作的时间消耗。,20,20,s-next = p-next; p-next = s; s-next-prior = s; s-prior = p;,p,s,插入,21,21,删除,p-next = p-next-next; p-next-prior = p;,p,22,第7次上机作业,1.实现双向链表的插入、删除、输出元素。 2. 实现归并排序。,

    注意事项

    本文(一章排序.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开