数据结构与算法分析(Java版) 作者 第8章.pptVIP

数据结构与算法分析(Java版) 作者 第8章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 查找 8.1基本概念 8.2 线性表查找 8.2.1 顺序查找 8.2.2 二分查找 8.2.3 分块查找 8.3 二叉排序树 8.4散列技术 8.1基本概念 查找表 :一般,假定被查找的对象是由一组结点组成的表(Table)或文件,而每个结点则由若干个数据项组成。并假设每个结点都有一个能惟一标识该结点的关键字。 查找(Searching) :给定一个值K,在含有n个结点的表中找出关键字等于给定值K的结点。 查找表的数据结构表示 : (1)动态查找表和静态查找表 (2)内查找和外查找 平均查找长度ASL 8.2 线性表查找 8.2.1 顺序查找 1. 基本思想 2.顺序查找的存储结构要求 3.具体算法 4.算法分析 8.2 线性表查找 8.2.2 二分查找 1.基本思想 2.具体算法 3.算法分析 8.2 线性表查找 8.2.3 分块查找 分块查找又称索引顺序查找。它是把顺序查找和二分查找相结合的一种查找方法,即把线性表分成若干块,块和块之间有序,但每一块内的结点可以无序。分块查找的基本思想是:先确定被查找的结点所在的块(采用二分查找法)后,对该块中的结点采用顺序查找。 分块查找介于顺序和二分查找之间,其优点是:在表中插入或删除一个记录时,只要找到该记录所属的块,就在该块内进行插入和删除运算。分块查找的主要代价是增加一个辅助数组的存储空间和将初始表分块排序的运算。 8.3 二叉排序树 1.二叉排序树的基本概念 二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树或二叉分类树,它是一种特殊的二叉树;或者为空或者满足下面条件的二叉树: 每个结点的左子树上的所有结点的关键字,值均小于该结点的关键字值; 每个结点的右子树上的所有结点的关键字,值均大于或等于该结点的关键字值。 左、右子树本身又各是一棵二叉排序树。 8.3 二叉排序树 2、二叉排序树的特点 由BST性质可得: (1)二叉排序树中任一结点x,其左(右)子树中任一结点y(若存在)的关键字必小(大)于x的关键字。 (2)二叉排序树中,各结点关键字是惟一的。 (3)按中序遍历该树所得到的中序序列是一个递增有序序列。 8.3 二叉排序树 3.二叉排序树的算法 实际上二叉排序树的算法就是一个动态的查找过程。其过程可以简单描述为: 在查找某一个值K时,首先令K与二叉树的根结点的值Ra进行比较; 如果KRa:则在二叉树的左子树上查找K; 如果K≥Ra:则在二叉树的右子树上查找K; 如果二叉排序树中没有值为K的结点,则将值为K的结点按照二叉排序树构造的规则插入到该二叉树中; 其对应算法主要分为两步,建立二叉树和对结点的查找. 8.3 二叉排序树 4.算法分析 (1)二叉排序树查找成功的平均查找长度 (2)在二叉排序树上进行查找时的平均查找长度和二叉树的形态有关 (3)二叉排序树和二分查找的比较 (4)平衡二叉树 8.4散列技术 1.散列表的概念 (1)散列(HASH)表的定义 :若一个结点在表中的位置和该结点的关键字之间不存在确定的关系,则在表中查找某结点时必然要进行关键字的比较,否则不然。 (2)散列表的冲突现象 ①冲突 ②安全避免冲突的条件 ③冲突不可能完全避免 ④影响冲突的因素 8.4散列技术 2.散列函数的构造 (1) 基本思想:以记录的存储位置和关键字之间确定一种对应关系f,使每一个关键字和结构中的一个存储位置相对应,由此只要知道关键字K,就可以知道关键字的记录所存放的位置f(K),从而取得记录。 ① 除余法 ② 平方取中法 ③相乘取整法 ④随机数法 8.4散列技术 (2)碰撞(冲突)的处理法 ①开放地址法 ②拉链法 ③差值法 3.散列表的算法。散列表上的运算有查找、插人和删除。其中主要是查找,这是因为散列表的目的主要是用于快速查找,且插入和删除均要用到查找操作。 8.4散列技术 4.性能分析 只分析查找操作的时间性能 由于冲突的存在,散列表的查找过程仍是一个和关键字比较的过程 在一般情况下,处理冲突(碰撞)方法相同的散列表,其平均查找长度依赖于散列表的装填因子 8.4散列技术 需注意的是: ①由同一个散列函数、不同的解决冲突方法构造的散列表,其平均查找长度是不相同的。 ②散列表的平均查找长度不是结点个数n的函数,而是装填因子α的函数。因此在设计散列表时可选择α以控制散列表的平均查找长度。 ③α的取值 α越小,产生冲突的机会就小,但α过小,空间的浪费就过多。只要α选择合适,散列表上的平均查找长度就是一个常数,即散列表上查找的平均时间为O(1)。 ④散列法与其他查找方法的

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档