数据结构专升本第八周..docVIP

  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文档。上传文档
查看更多
数据结构专升本第八周.

第九章 查找 基本概念 查找表:由同一类型的数据元素(记录)构成的集合。 查找(Searching):就是在按某种数据结构形式存储的数据集合中,找出满足指定条件的结点(或记录)。分类 按查找的条件分类,有按主关键字或次关键字查找。按查找的数据的存放的存储器分类,可划分为内查找和外查找。内查找:整个查找过程都在内存进行。 外查找:查找过程中需要访问外存。 按查找的目的分类,可划分为静态查找和动态查找。 若在查找的同时对表做修改操作,则相应的表称之为动态查找表(Dynamic Search Table),否则称之为静态查找表(Static Search Table)。 平均查找长度ASL(Average Search Length):衡量一个查找算法次序优劣的标准是在查找过程中对关键字需要执行的平均比较次数。 其中:n是结点的个数;pi是查找第i个结点的概率,若不特别声明,均认为每个结点的查找概率相等,即p1=p2=…=pn=1/n;ci是找到第i个结点所需进行的比较次数。线性表上进行查找的方法主要有三种:顺序查找、二分查找和分块查找。 顺序查找(Sequential Search)算法基本思想是:从表的一端开始顺序扫描线性表,依次将扫描到的结点关键字与给定值K相比较,若当前扫描到的结点关键字与K相等,则查找成功;若扫描结束后,仍未找到关键字等于K的结点,则查找失败。顺序查找方法适用于线性表的顺序存储结构和链式存储结构。 算法中监视哨R[0]的作用是为了在for循环中省去判定防止下标越界的条件,从而节省比较的时间。 对于含有n个结点的顺序表,结点的查找在等概率的前提下,对于成功的查找,平均检索长度为(n+1)/2,对于失败的查找,则需要比较n+1次。二分查找又称为折半查找(Binary Search),它要求线性表中结点必须按关键字值递增或递减顺序排列。 二分查找的基本思想:首先用要查找的关键字K与中间位置的结点的关键字相比较,这个中间结点把线性表分成了两个子表,若比较结果相等则查找完成;若不相等,再根据K与该中间结点关键字的比较大小确定下一步查找哪个子表,这样递归下去,直到找到满足条件的结点或者该线性表中没有这样的结点。 在等概率假设下,二分查找成功时的平均查找长度近似于lg(n+1)-1;在查找失败时所需比较的关键字个数不超过判定树的深度,在最坏情况下查找成功的比较次数也不超过判定树的深度┌lg(n+1)┐。 二分查找只适用于顺序存储结构。分块查找(Blocking Search)又称为索引顺序查找,其性能介顺序查找和二分查找之间。 分块查找的基本思想:分块查找要求把顺序表分成若干块,每一块中的键值存储顺序是任意的,但要求“分块有序”,即前一块中的最大键值小于后一块中最小键值。即块间结点有序,块内结点任意。另外,还需要建立一个索引表,索引表中的每一项对应顺序表的一块,索引项由关键字域和链域组成,关键字域存放对应块内结点的最大键值,链域存放对应块首结点的位置。索引表中的索引项是按键值递增顺序存放。若以二分查找来确定块,则分块查找成功时的平均查找长度为:lg(n/s+1)+s/2;若以顺序查找确定块,则分块查找成功时的平均查找长度为:(s2+2s+n)/(2s)。 分块查找算法的效率介于顺序查找和二分查找之间。 线性表查找方法的比较 树表的查找 一、二叉排序树概念 二叉排序树(Binary Sort Tree):又称二叉查找(搜索)树,其定义为:二叉排序树或者是空树,或者是满足如下性质的二叉树:若它的左子树非空,则左子树上所有结点的值均小于根结点的若它的右子树非空,则右子树上所有结点的值均大于根结点的值;左、右子树本身又各是一棵二叉排序树。 二叉排序树实际上是满足BST性质的二叉树。 二叉排序树的另一个重要性质:按中序遍历该树所得到的中序序列是一个递增有序序列。二叉排序树的插入和生成   插入的方法是:若二叉排序树为空,则新插入结点作为根结点插入到空二叉树中;若二叉排序树非空,则在二叉排序树中查找数据域值为key的结点,若查到,则说明二叉排序树中已有此结点,不必插入;若查不到,查找会停止在某结点的空的左子树或右子树处,说明二叉排序树中无此结点,这时将新插入结点作为叶子结点插入到二叉排序树中的该位置,因此也称为叶插入。二叉排序树的删除  删除算法可分三种情况:若被删结点为叶子结点 若被删结点为叶子结点,只需将其双亲结点与它之间相链接的指针置空即可。若被删结点仅有左子树或仅有右子树。  若被删结点仅有左子树或仅有右子树(是度为1的结点),则用这棵子树的根结点替换被删结点。只需将其双亲结点与它之间相链接的指针改为指向这棵子树的根结点。若被删结点有左、右子树  可用它的中序前驱结点S(被删结点左子树中键值最大的结点)代替被删结点。

文档评论(0)

stzs + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档