网站大量收购独家精品文档,联系QQ:2885784924

《算法与数据结构》教学课件-第6章 字典和高级字典--C语言描述(第2版)张乃孝编著.ppt

《算法与数据结构》教学课件-第6章 字典和高级字典--C语言描述(第2版)张乃孝编著.ppt

  1. 1、本文档共96页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
张乃孝 算法与数据结构——C语言描述 算法6.11 顺序检索算法 int seqSearch(SeqDictionary *pdic, KeyType key, int position) /*在字典中顺序检索关键码为key的元素*/ { int i; for(i=0; ipdic-n; i++) /* 从头开始向后扫描*/ if(pdic-element[i].key==key) { position=i; return(1); /* 检索成功 */ } position=pdic-n; return(0); /* 检索失败 */ } 算法6.11 顺序检索算法 ASL = 1*p1 +2* p2 + …+n* pn = (1+2+…+n)/n (pi=1/n) = (n+1)/2=O(n) 优点是算法简单且适应面广,无论字典中元素是否有序均可使用。 缺点是平均检索长度较大,特别是当n很大时,检索效率较低。 [05,10,18,25,27,32,41,51,68,73,99] 05,10,18,25,27,32,[41,51,68,73,99] 05,10,18,25,27,32,41,51,68,[73,99] 05,10,18,25,27,32,41,51,68,73,[99] 检索关键码75 折半查找的判定树 用一棵二叉树来描述折半查找过程:二叉树结点中的数值表示有序表记录中的序号。虚黑线表示查找25比较过的记录,虚红线表示查找75经过的记录。记录在判定树上的层次恰为找到此记录时所需比较的次数。 设每个记录查找概率相等,查找成功的平均查找长度: 作业:p.243 复习题 1、7、8 p.244 算法题 1 网络课堂测试:6 字典与高级字典 上机:实验5.4 小 结 字典是一种特殊的集合,其最主要的操作为字典中元素的检索。本章介绍了字典的各种存储表示及相应的检索方法,它们是字典的各种线性表示(例如:顺序表表示,链表表示和目录表表示等)、各种散列表示(例如:开地址法、拉链法和桶散列等)、各种二叉树表示(例如:一般的二叉排序树、最佳二叉排序树和平衡的二叉排序树等)以及各种多叉树表示(例如B树和B+树)。其中顺序表示的线性表、开地址法处理碰撞的散列表和最佳二叉排序树主要使用于静态或基本静态的字典;链表表示的线性表、拉链法处理碰撞的散列表、桶散列结构、平衡的二叉排序树、B树和B+树等较多地考虑到元素的动态处理,适合于组织各种动态的字典;其中B树、B+树和桶散列结构主要使用于外存的大型字典表示。 RR型调整操作示意图 (α)A(βBγ)= (αAβ)B(γ) 调整规则:将A的右子女B提升为新二叉树的根;原来的根A连同其左子树向左下旋转成为B的左子树;B的原左子树作为A的右子树。 27 51 0 1 B A 27 51 0 1 B A 73 2 73 51 0 0 B A 27 0 51 27 0 1 B A 10 0 73 41 0 99 73 0 B A 51 0 ? 27 41 0 10 0 0 -1 ? ? 图6.17 RR型调整操作示例 0 99 0 1 1 2 ? ? ? LR型调整操作示意图 ((α)B(βCγ))A(δ)= (αBβ)C(γAδ) 调整规则∶设C为A的左子女的右子女,将A的孙子结点C提升为新二叉树的根;原C的父结点B连同其左子树α向左下旋转成为新根C的左子树,原C的左子树β成为B的右子树;原根A连同其右子树δ向右下旋转成为新根C的右子树,原C的右子树γ成为A的左子树。 51 27 0 -1 B A 10 0 ? 05 18 0 0 C ? 51 27 0 C A 18 0 10 16 0 05 0 0 1 ? B 图6.19 LR型调整操作示例 51 27 1 B A 10 0 ? 05 18 0 -1 C ? 16 0 ? -2 ? RL型调整操作示意图 (α)A((βCγ)B(δ))= (αAβ)C(γBδ) 调整规则:设C为A的右子女的左子女,将A的孙子结点C提升为新二叉树的根,原来C的父结点B连同其右子树δ向右下旋转成为新根C的右子树,C的原右子树γ成为B的左子树;原来的根A连同其左子树α向左下旋转成为新根C的左子树,原来C的左子树β成为A的右子树。 51 27 0 1 B A 10 0 73 41 0 73 51 0 C A 41 0 B 27

文档评论(0)

***** + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档