联系hashgameCONTACT hashgame
地址:广东省广州市
手机:13988889999
电话:020-88889999
邮箱:admin@qq.com
查看更多
Rhashgamehashgame
你的位置: 首页 > hashgame

HASH GAME - Online Skill Game ET 300二叉排序树and哈希查找ppt课件ppt

发布时间:2025-02-02 18:41:19  点击量:

  HASH GAME - Online Skill Game GET 300

HASH GAME - Online Skill Game GET 300二叉排序树and哈希查找ppt课件ppt

  1、2022-8-10动态查找表动态查找表 动态查找表的特点:表结构本身是在查找过程动态查找表的特点:表结构本身是在查找过程中动态生成的,即对于给定值中动态生成的,即对于给定值key,若表中存在其,若表中存在其关键字等于关键字等于key的纪录,则返回查找成功,否则插的纪录,则返回查找成功,否则插入关键字等于入关键字等于key的纪录。的纪录。本节主要介绍二叉排序树和平衡二叉树的有关本节主要介绍二叉排序树和平衡二叉树的有关概念和查找分析概念和查找分析2022-8-10 定义:二叉排序树或是一棵空树,或是具有下列性质定义:二叉排序树或是一棵空树,或是具有下列性质的二叉树:的二叉树:若它的左子树不空,则左

  2、子树上所有结点的值均若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值小于它的根结点的值 若它的右子树不空,则右子树上所有结点的值均若它的右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值大于或等于它的根结点的值 它的左、右子树也分别为二叉排序树它的左、右子树也分别为二叉排序树 二叉排序树的插入二叉排序树的插入 插入原则:若二叉排序树为空,则插入结点应为插入原则:若二叉排序树为空,则插入结点应为新的根结点;否则,继续在其左、右子树上查找,新的根结点;否则,继续在其左、右子树上查找,直至某个结点的左子树或右子树为空为止,插入直至某个结点的左子树或右子树为空为止,插入结点应为该

  3、结点的左孩子或右孩子结点应为该结点的左孩子或右孩子 二叉排序树生成:从空树出发,经过一系列的查二叉排序树生成:从空树出发,经过一系列的查找、插入操作之后,可生成一棵二叉排序树找、插入操作之后,可生成一棵二叉排序树2022-8-10 插入算法插入算法例例 10,18,3,8,12,2,7,838101838 12101838 122101838 1227101838 12273中序遍历二叉排序树可得到一个关键字的有序序列中序遍历二叉排序树可得到一个关键字的有序序列2022-8-10 二叉排序树的删除二叉排序树的删除要删除二叉排序树中的要删除二叉排序树中的p结点,分三

  4、种情况:结点,分三种情况:第一种情况:第一种情况:p为叶子结点,只需修改为叶子结点,只需修改p双亲双亲f的指针的指针 f-lchild=NULL f-rchild=NULL 见图见图(1)(2)2022-8-10SQPLP中序遍历:中序遍历:Q S PL PSQP中序遍历:中序遍历:Q S PL(2)SPPLQ中序遍历:中序遍历:PL P S QSPQ中序遍历:中序遍历:PL S Q(1)2022-8-10第二种情况第二种情况:p只有左子树或右子树只有左子树或右子树 p只有左子树,用只有左子树,用p的左孩子代替的左孩子代替p p只有右子树,用只有右子树,用p的右孩子代替的右孩子代替p 情况见图

  5、情况见图(3)(4)2022-8-10SQPLP中序遍历:中序遍历:Q S PL PSQPL中序遍历:中序遍历:Q S PL(2)SPPLQ中序遍历:中序遍历:PL P S QSPLQ中序遍历:中序遍历:PL S Q(1)2022-8-10中序遍历:中序遍历:P PR S QSPRQ中序遍历:中序遍历:PR S Q(3)SPPRQ中序遍历:中序遍历:Q S P PRSQPR中序遍历:中序遍历:Q S PR(4)SQPRP2022-8-10第三种情况:第三种情况:p左、右子树均非空左、右子树均非空 沿沿p左子树的根左子树的根C的右子树分支找到的右子树分支找到S,S的右子树为空,将的右子树为空,将

  7、81354删除删除1084255134删除删除58425413二叉排序树的查找分析二叉排序树的查找分析在二叉树上查找一个关键字的过程,恰是走了一在二叉树上查找一个关键字的过程,恰是走了一条从根节点到该节点的路径,因此与给定值比较的条从根节点到该节点的路径,因此与给定值比较的次数不超过树的深度。次数不超过树的深度。对相同数的集合构成的二叉排序树因为根节点不对相同数的集合构成的二叉排序树因为根节点不同而造成平均查找长度不同。同而造成平均查找长度不同。3ASL=(1+2*2+3*3)/6=14/93ASL=(1+2+3+4+5

  8、+6)/6=21/62022-8-10含有含有n个节点的二叉排序树的平均查找长度和树的形个节点的二叉排序树的平均查找长度和树的形态有关。态有关。若插入的关键字有序时,构成的二叉排序树蜕变成单若插入的关键字有序时,构成的二叉排序树蜕变成单支树,其平均查找长度为支树,其平均查找长度为(n+1)/2。最好的情况为二叉排序树的形态和折半查找的判定树最好的情况为二叉排序树的形态和折半查找的判定树相同,其平均查找长度和相同,其平均查找长度和log2n成正比。成正比。要想使任何的关键字的集合构成的二叉排序树的平均要想使任何的关键字的集合构成的二叉排序树的平均查找长度均达到查找长度均达到log2n数量级,需对

  9、二叉排序树进行数量级,需对二叉排序树进行“平衡化平衡化”处理,成为平衡二叉树。处理,成为平衡二叉树。2022-8-10 平衡二叉树或者是一棵空树,或者具有以下性质:平衡二叉树或者是一棵空树,或者具有以下性质:左子树和右子树的深度之差的绝对值不超过左子树和右子树的深度之差的绝对值不超过1;它的左子树和右子树又分别是平衡二叉树。它的左子树和右子树又分别是平衡二叉树。二叉树节点的平衡因子二叉树节点的平衡因子BF:该节点的左子树深度减去:该节点的左子树深度减去右子树的深度。右子树的深度。BFBalance Factor所以平衡二叉树的平衡因子只可能为所以平衡二叉树的平衡因子只可能为-1,0,1。否则不

  10、。否则不能成为平衡二叉树。能成为平衡二叉树。2022-8-10下面举例说明构成平衡二叉树的过程下面举例说明构成平衡二叉树的过程:有关键字序列(有关键字序列(13,24,37,90,53),生成平衡二),生成平衡二叉树:叉树:空空(a)01-124-2-8-10-0(1)(2)-237-3--153090(3)053-7(4)2022-8-10若插入结点使平衡二叉树失去平衡的最小子树根结点指针为若插入结点使平衡二叉树失去平衡的最小子树根结点指针为a,则则:由

  11、于在由于在*a的左子树根节点的左子树上插入接点,的左子树根节点的左子树上插入接点,*a的平衡因子的平衡因子 由由1增到增到2,致使以,致使以*a为根的子树失去平衡,则需要进行一次向右为根的子树失去平衡,则需要进行一次向右 的顺时针旋转操作。的顺时针旋转操作。(LL型型)由于在由于在*a的右子树根节点的右子树上插入接点,的右子树根节点的右子树上插入接点,*a的平衡因子的平衡因子 由由-1变为变为-2,致使以,致使以*a为根的子树失去平衡,需要进行一次向左为根的子树失去平衡,需要进行一次向左 的逆时针旋转操作。的逆时针旋转操作。(RR型型)由于在由于在*a的左子树根节点的右子树上插入接点,的左子树

  12、根节点的右子树上插入接点,*a的平衡因子的平衡因子 由由1变为变为2,致使以,致使以*a为根的子树失去平衡,需要进行两次旋转操为根的子树失去平衡,需要进行两次旋转操 作(先左后右)。作(先左后右)。(LR型型)由于在由于在*a的右子树根节点的左子树上插入接点,的右子树根节点的左子树上插入接点,*a的平衡因子的平衡因子 由由-1变为变为-2,致使以,致使以*a为根的子树失去平衡,需要进行两次旋转为根的子树失去平衡,需要进行两次旋转 操作(先右后左)。操作(先右后左)。(RL型型)调整的原则:一是满足平衡二叉树的要求;调整的原则:一是满足平衡二叉树的要求;二是保持排序二叉树的性质二是保持排序二叉树

  13、的性质2022-8-10 (1)LL型调整型调整由于在由于在*a的左子树根节点的左子树上插入接点,的左子树根节点的左子树上插入接点,*a的平衡因子的平衡因子由由1增到增到2,致使以,致使以*a为根的子树失去平衡,则需要进行一次向为根的子树失去平衡,则需要进行一次向右的顺时针旋转操作。右的顺时针旋转操作。(LL型型)LL型调整规则型调整规则将将A的左子树的左子树B提升为新二叉树的根;原来的根提升为新二叉树的根;原来的根A连同其右子连同其右子树树向右下旋转成为向右下旋转成为B的右子树;的右子树;B的原右子树的原右子树作为作为A的左的左子树。子树。2022-8-10 (2)RR型调整型调整由于在由于

  14、在*a的右子树根节点的右子树上插入接点,的右子树根节点的右子树上插入接点,*a的平衡因子的平衡因子由由-1变为变为-2,致使以,致使以*a为根的子树失去平衡,需要进行一次向为根的子树失去平衡,需要进行一次向左的逆时针旋转操作。左的逆时针旋转操作。(RR型型)RR型调整规则:型调整规则:将将A的右子树的右子树B提升为新二叉树的根;原来的根提升为新二叉树的根;原来的根A连同其左子树连同其左子树向左下旋转成为向左下旋转成为B的左子树;的左子树;B的原左子树作为的原左子树作为A的右子树。的右子树。2022-8-10 (3)LR型调整型调整由于在由于在*a的左子树根节点的右子树上插入接点,的左子树根节点

  15、的右子树上插入接点,*a的平衡因子的平衡因子 由由1变为变为2,致使以,致使以*a为根的子树失去平衡,需要进行两次旋转操作为根的子树失去平衡,需要进行两次旋转操作(先左后右)。(先左后右)。(LR型型)LRLR型调整规则:型调整规则:设设C C为为A A的左子女的右子女,将的左子女的右子女,将A A的孙子结点的孙子结点C C提升为新二叉树的根;原提升为新二叉树的根;原C C的父结点的父结点B B连同其左子树连同其左子树向左下旋转成为新根向左下旋转成为新根C C的左子树,原的左子树,原C C的左的左子树子树成为成为B B的右子树;原根的右子树;原根A A连同其右子树连同其右子树向右下旋转成为新根

  16、向右下旋转成为新根C C的右子树,原的右子树,原C C的右子树的右子树成为成为A A的左子树。的左子树。2022-8-10 (4)RL型调整型调整由于在由于在*a的右子树根节点的左子树上插入接点,的右子树根节点的左子树上插入接点,*a的平衡因子由的平衡因子由-1变为变为-2,致使以,致使以*a为根的子树失去平衡,需要进行两次旋转操作为根的子树失去平衡,需要进行两次旋转操作(先右后左)。(先右后左)。(RL型型)RLRL型调整规则:型调整规则:设设C C为为A A的右子女的左子女,将的右子女的左子女,将A A的孙子结点的孙子结点C C提升为新二叉树的根,提升为新二叉树的根,原来原来C C的父结点

  17、的父结点B B连同其右子树连同其右子树向右下旋转成为新根向右下旋转成为新根C C的右子树,的右子树,C C的原右子树的原右子树成为成为B B的左子树;原来的根的左子树;原来的根A A连同其左子树连同其左子树向左下旋向左下旋转成为新根转成为新根C C的左子树,原来的左子树,原来C C的左子树的左子树成为成为A A的右子树。的右子树。2022-8-10如:如:输入关键字序列输入关键字序列16,3,7,11,9,26,18,14,15,给出构给出构造一棵造一棵AVL树的步骤。树的步骤。16 0(a)插插入入 16 16 1(b)插插入入 3 3 0 16 2(c)插插入入 7 3-1 7 0 7 0

  19、 26 0 16 1(l)插入插入 14 14 0 7 0 3 0 11-2 9 0 18 2 26 0 16 2(m)插入插入 15 14-1 15 0 7 0 3 0 11-1 9 0 18 1 26 0 15 0 0 14 16 0(n)LR 调整调整 2022-8-10哈希查找哈希查找Hash查找查找 基本思想:在记录的存储地址和它的关键字之间基本思想:在记录的存储地址和它的关键字之间建立一个确定的对应关系;这样,不经过比较,建立一个确定的对应关系;这样,不经过比较,一次存取就能得到所查元素的查找方法一次存取就能得到所查元素的查找方法 定义定义 哈希函数哈希函数记录的关键字与记录的存储

  20、地址之间建记录的关键字与记录的存储地址之间建立的一种对应关系立的一种对应关系 哈希函数是一种映象,是从关键字空间到存储地哈希函数是一种映象,是从关键字空间到存储地址空间的一种映象址空间的一种映象 哈希函数可写成:哈希函数可写成:addr(ai)=H(ki)ai是表中的一个元素是表中的一个元素 addr(ai)是是ai的存储地址的存储地址 ki是是ai的关键字的关键字存储地址存储地址集合集合hash2022-8-10 哈希表哈希表应用哈希函数,由记录的关键字确定记录应用哈希函数,由记录的关键字确定记录在表中的地址,并将记录放入此地址。该表叫在表中的地址,并将记录放入此地址。该表叫 哈希查找哈希查

  21、找又叫散列查找,利用哈希函数进行查找又叫散列查找,利用哈希函数进行查找的过程叫的过程叫例例1 30个地区的各民族人口统计表个地区的各民族人口统计表编号编号 地区别地区别 总人口总人口 汉族汉族 回族回族.1 北京北京2 上海上海.以编号作关键字,以编号作关键字,构造构造哈希函数:哈希函数:H(key)=keyH(1)=1H(2)=2以地区别作关键字,取地区以地区别作关键字,取地区名称第一个拼音字母的序号名称第一个拼音字母的序号作哈希函数:作哈希函数:H(Beijing)=2 H(Shanghai)=19 H(Shenyang)=192022-8-10 例例2:2:对于一组关键字序列对于一组关键

  22、字序列 (25(25,7474,3636,1515,4040,2929,8282,1919,6565,3333,5757,4747,50),50),选取函数选取函数 h(key)h(key)key%13 key%13 建立记录与其在查找表中存储位置建立记录与其在查找表中存储位置之间的关系,可得到如下表所示的一张查找表:之间的关系,可得到如下表所示的一张查找表:当对该表检索时,只需用给定关键字值当对该表检索时,只需用给定关键字值k k通过这个函数计算出地通过这个函数计算出地址,以该地址从检索表的对应位置取出记录的有关信息即可,址,以该地址从检索表的对应位置取出记录的有关信息即可,不需要进行关键字

  23、值的比较操作。不需要进行关键字值的比较操作。如检索如检索key=57key=57的记录,通过的记录,通过h(57)=57%13=5h(57)=57%13=5知关键字值为知关键字值为5757的记的记录在检索表的存储位置录在检索表的存储位置5 5处,从而得到关键字值为处,从而得到关键字值为5757的记录的有的记录的有关信息。关信息。2022-8-10从例子可见:从例子可见:哈希函数只是一种映象,所以哈希函数的设定很灵活,只哈希函数只是一种映象,所以哈希函数的设定很灵活,只要使任何关键字的哈希函数值都落在表长允许的范围之内要使任何关键字的哈希函数值都落在表长允许的范围之内即可即可 冲突:冲突:key

  24、1 key2,但但H(key1)=H(key2)的现象的现象 同义词:具有相同函数值的两个关键字,叫该哈希函数的同义词:具有相同函数值的两个关键字,叫该哈希函数的 哈希函数通常是一种压缩映象,所以冲突不可避免哈希函数通常是一种压缩映象,所以冲突不可避免,只能,只能尽量减少;同时,冲突发生后,应该有处理冲突的方法尽量减少;同时,冲突发生后,应该有处理冲突的方法 产生散列冲突相关的主要因素:产生散列冲突相关的主要因素:u 装填因子:装填因子:散列表中已存入元素散列表中已存入元素n n与散列表空间大小与散列表空间大小m m的比。的比。装填因子越小,产生的冲突就越小;否则,就越大。装填因子越小,产生的

  25、冲突就越小;否则,就越大。u 散列函数散列函数 散列函数选择适当,使散列地址尽可能均匀地分布在散列散列函数选择适当,使散列地址尽可能均匀地分布在散列空间中,产生的冲突就少;否则,就大。空间中,产生的冲突就少;否则,就大。u 冲突的解决方法冲突的解决方法2022-8-10 哈希函数的构造方法哈希函数的构造方法直接定址法直接定址法 方法:取关键字或关键字的某个线性函数作哈希地址。方法:取关键字或关键字的某个线性函数作哈希地址。H(key)=key 或或 H(key)=akey+b 特点特点:直接定址法所得地址集合与关键字集合大小相等,直接定址法所得地址集合与关键字集合大小相等,不会发生冲突。若有冲

  26、突,说明关键字错误。不会发生冲突。若有冲突,说明关键字错误。实际中能用这种哈希函数的情况很少实际中能用这种哈希函数的情况很少 适用于关键字分布基本连续的情况。若不连续,适用于关键字分布基本连续的情况。若不连续,空号较多,将造成存储空间的严重浪费。空号较多,将造成存储空间的严重浪费。2022-8-10数字分析法数字分析法 方法:对关键字进行分析,取关键字的若干位或其组合作哈希地址方法:对关键字进行分析,取关键字的若干位或其组合作哈希地址 适用于关键字位数比哈希地址位数大,且关键字事先知道的情况适用于关键字位数比哈希地址位数大,且关键字事先知道的情况例:例:有有80个记录,关键字为个记录,关键字为

  27、8位十进制数,哈希地址为位十进制数,哈希地址为2位十进制数位十进制数8 1 3 4 6 5 3 28 1 3 7 2 2 4 28 1 3 8 7 4 2 28 1 3 0 1 3 6 78 1 3 2 2 8 1 7 8 1 3 3 8 9 6 78 1 3 6 8 5 3 78 1 4 1 9 3 5 5.分析:分析:位只取位只取8 位只取位只取1 位只取位只取3、4 位只取位只取2、7、5 位数字分布近乎随机位数字分布近乎随机所以:取所以:取任意两位或两位任意两位或两位 与另两位的叠加作哈希地址与另两位的叠加作哈希地址2022-8-10平方取中法平方取中法 方法:取关键字平方后中间几位作

  28、哈希地址方法:取关键字平方后中间几位作哈希地址 适用于不知道全部关键字情况适用于不知道全部关键字情况折叠法折叠法 方法:将关键字分割成位数相同的几部分,然后取这几部分方法:将关键字分割成位数相同的几部分,然后取这几部分的叠加和(舍去进位)做哈希地址的叠加和(舍去进位)做哈希地址 种类种类 移位叠加:将分割后的几部分低位对齐相加移位叠加:将分割后的几部分低位对齐相加 间界叠加:从一端沿分割界来回折送,然后对齐相加间界叠加:从一端沿分割界来回折送,然后对齐相加 适于关键字位数很多,且每一位上数字分布大致均匀情况适于关键字位数很多,且每一位上数字分布大致均匀情况例例 关键字为关键字为:0442205

  29、864,哈希地址位数为,哈希地址位数为45 8 6 44 2 2 00 41 0 0 8 8H(key)=0088移位叠加移位叠加5 8 6 40 2 2 40 4 6 0 9 2H(key)=6092间界叠加间界叠加2022-8-10除留余数法除留余数法 方法:取关键字被某个不大于哈希表表长方法:取关键字被某个不大于哈希表表长m的数的数p除后所得除后所得余数作哈希地址,即余数作哈希地址,即H(key)=key MOD p,p m 特点特点 简单、常用,可与上述几种方法结合使用简单、常用,可与上述几种方法结合使用 p的选取很重要;的选取很重要;p选的不好,容易产生同义词选的不好,容易产生同义词

  30、随机数法随机数法 方法:取关键字的随机函数值作哈希地址。方法:取关键字的随机函数值作哈希地址。H(key)=random(key)适适用用于关键字长度不等的情况于关键字长度不等的情况选取哈希函数,考虑以下因素:选取哈希函数,考虑以下因素:计算哈希函数所需时间计算哈希函数所需时间 关键字长度关键字长度 哈希表长度(哈希地址范围)哈希表长度(哈希地址范围)关键字分布情况关键字分布情况 记录的查找频率记录的查找频率2022-8-10 处理冲突的方法处理冲突的方法开放定址法开放定址法方法:当冲突发生时,形成一个探查序列;方法:当冲突发生时,形成一个探查序列;沿此序列逐个地址探查,直到找到一个空位沿此序

  34、点:计算时间增加特点:计算时间增加链地址法链地址法 方法:将所有关键字为同义词的记录存储在一个单链方法:将所有关键字为同义词的记录存储在一个单链表中,并用一维数组存放头指针表中,并用一维数组存放头指针2022-8-10例:例:已知一组关键字已知一组关键字 (19,14,23,1,68,20,84,27,55,11,10,79)哈希函数为:哈希函数为:H(key)=key MOD 13 用链地址法处理冲突用链地址法处理冲突0 1 2 3 4 5 6 7 8 9 10 11 12 2-8-10 哈希查找过程及分析哈希查找过程及分析 哈希查找过程哈

  35、希查找过程给定给定k值值计算计算H(k)此地址为空此地址为空关键字关键字=k查找失败查找失败查找成功查找成功按处理冲突按处理冲突方法计算方法计算HiYNYN2022-8-10 哈希查找分析哈希查找分析 哈希查找过程仍是一个给定值与关键字进行比较哈希查找过程仍是一个给定值与关键字进行比较的过程的过程 评价哈希查找效率仍要用评价哈希查找效率仍要用ASL 哈希查找过程与给定值进行比较的关键字的个数哈希查找过程与给定值进行比较的关键字的个数取决于:取决于:哈希函数哈希函数 处理冲突的方法处理冲突的方法 哈希表的装填因子哈希表的装填因子=表中填入的记录数表中填入的记录数/哈希哈希表长度表长度例例 已知一

  39、11,10,79)哈希函数为:哈希函数为:H(key)=key MOD 13,2022-8-10 哈希查找算法实现哈希查找算法实现 用线性探测再散列法处理冲突用线性探测再散列法处理冲突 实现实现 查找过程:同前查找过程:同前 删除:只能作标记,不能真正删除删除:只能作标记,不能真正删除 若移动元素,破坏哈希地址和关键字记录间的若移动元素,破坏哈希地址和关键字记录间的对应关系。对应关系。插入:遇到空位置或有删除标记的位置就可以插入:遇到空位置或有删除标记的位置就可以插入插入 算法描述:算法描述:用外链表处理冲突算法用外链表处理冲突算法2022-8-10#define M 100int h(int

【返回列表页】

顶部

地址:广东省广州市  电话:020-88889999 手机:13988889999
Copyright © 2018-2025 哈希游戏(hash game)官方网站 版权所有 非商用版本 ICP备案编: