版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第九章 查找9.1 静态查找表 9.1.1 顺序表的查找 9.1.2 有序表的查找9.2 动态查找表 9.2.1 二叉排序树和二叉平衡树9.3 哈希( Hashing )表(散列表) 第九章 查找查找表 (search table): 同一类型数据元素构成的集合。查找操作:(1)查询某个“特定的”数据元素是否在查找表中;(2)检索某个“特定的”数据元素的各种属性;(3)在查找表中插入一个数据元素;(4)从查找表中删除某个数据元素.静态查找表:对查找表只作(1)、(2)操作;动态查找表:可以对查找表作(1)-(4)操作。有关查找的“词”的含义关键字(KEY): 数据元素(或记录)的某个数据项的值
2、,用以标识一个数据元素(或记录). 可以唯一标识一个记录的关键字称为主关键字(Primary Key); 否则称为次关键字(Secondary Key). 查找(Searching) 根据给定的值,在查找表中确定一个关键字等于给定值的记录或数据元素.9.1 静态查找表可以用顺序表,也可以用线性链表来表示静态查找表。 顺序表的查找typedef struct /静态查找表的顺序存储结构 ElemType *elem; int length;SSTable;elemlengthkey012.length-1length顺序查找(Sequential Search)int Search_Seq(SS
3、Table ST, KeyType key) ST.elem0.key = key; / “哨兵” for(i=ST.length; !EQ(ST.elemi.key, key); -i); return i;性能分析: 设Pi为查找表中第i个记录的概率(取Pi=1/n);Ci为找到第i个记录所需的查找次数。则 n ASL = Pi Ci = nP1+(n-1)P2+.+2Pn-1+Pn i=1 = n+(n-1) +.+2+1*1/n = (n+1)/2若查找成功与不成功的概率相同,即Pi=1/2n, ASL = nP1+(n-1)P2+.+2Pn-1+Pn+(n+1)/2 = (n+1)*
4、3/4有序表的查找:折半查找(Binary Search)确定待查记录的区间,逐步缩小范围直到找到或找不到该记录为止。例子: 数据元素有序表如下,查找关键字key=21的数据元素。 21(05,13,19,21,37,56,64,75,80,88,92)下标: 0 1 2 3 4 5 6 7 8 9 10 11 05,13,19,21,37,56,64,75,80,88,92 low mid highmid = (low+high)/2; key=ST.elemmid.key查找成功;当keyST.elemmid.key时下一个待查区间为mid+1,high折半查找的性能分析查找上例中所有元素
5、的判定二叉树为6314795102118判定树判定树上每个结点需要的查找次数刚好为该结点所在的层数.查找成功时查找次数不会超过判定树的深度n个结点的判定树的深度为log2n+1.折半查找的算法复杂度为log2n+19.2 动态查找表9.2.1 二叉排序树什么是二叉排序树(Binary Sort Tree) ?二叉排序树是空树,或者是具有以下性质的二叉树:(1)若左子树非空,则左子树上所有结点的值均小于 它的根结点的值;(2)若右子树非空,则右子树上所有结点的值均大于 它的根结点的值;(3)它的左、右子树也分别为二叉排序树。二叉排序树举例45123375378100249061二叉排序树查找过程
6、: 从根结点出发,结点的值与key进行比较:(1)相等时查找成功;(2)key较大时,沿右子树继续查找(无右子树表明查找失败);(3)key较小时,沿左子树继续查找(无左子树表明查找失败)。其中序遍历序列:3,12,24,37,45,53,61,78,90,100二叉排序树的生成(插入结点)二叉排序树的生成(连续进行插入操作)例如:对45,24,53,45,12,24,90关键字序列的二叉排序树生成过程如下:452412534524125390452453452445二叉排序树结点的删除(保持二叉排序树的特性及次序)设被删除的结点为*p,其父结点为*f,并不失一般性假设*p为*f的左孩子,则(
7、1)若*p为叶结点,即PL和PR均为空.直接删除不会影响树结构;(2)若*p只有PL或只有PR.只要令PL或PR直接成为其双亲结点*f的左孩子即可,这样也不会影响树结构;(3)若*p有PL也有PR.为保持中序遍历二叉树的序列不变,可以有两种处理方法:其一是令PL为*f的左子树,PR为*s的右子树(*s为中序遍历PL的最后一个结点);其二是令*p的直接前驱(或直接后继)*s替代*p,然后删除直接前驱(或直接后继)*s.若*s有左孩子则左孩子取代*s的位置.这样虽然影响了树结构,但不会影响中序遍历二叉树时的结点次序.在二叉排序树中删除结点*pFPCPRSLCLQSQLFSCPRSLCLQQLFCP
8、LCLSQL二叉排序树的查找分析n个结点的二叉排序树的平均查找长度和树的形态有关45,24,53,45,12,37,93最坏情况是二叉排序树蜕变单支树:12,24,37,45, 53,93452412539337452412539337ASL = O(log2n)ASL = O(n/2)二叉排序树举例(题目)已知如下所示长度为12的表(Jan,Fab,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec)(1)试按表中元素的顺序依次插入一棵初始为空的二叉排序树,画出插入插入完成之后的二叉排序树,并求其在等概率的情况下查找成功的平均查找长度ASL;(2)若对表中元素
9、先进行排序构成有序表,求其在等概率的情况下对此有序表进行折半查找时查找成功的平均查找长度;二叉排序树举例(解答1)(Jan,Fab,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec)JanFebAprMarJuneMayDecOctSep二叉排序树JulyAugNov其在等概率(1/12)的情况下查找成功的平均查找长度:ASL=(1+2*2+3*3+4*3+5*2+6*1)/12 = 42/12 = 3.5JulyDecAprMayJuneOctFebNovDec判定树JanAugAug二叉排序树举例(解答2)(Apr,Aug,Dec,Fab,Jan,July
10、,June,Mar,May,Nov,Oct,Sep)其在等概率(1/12)的情况下查找成功的平均查找长度:ASL=(1+2*2+3*4+4*5)/12 = 37/12 = 3.19.2.2 平衡二叉树什么是平衡二叉树(Balanced Binary Tree) ?平衡二叉树是空树,或者是具有以下性质的二叉树:它的左子树和右子树也都是平衡二叉树并且左子树和右子树的深度之差的绝对值不超过1结点的平衡因子BF(Balance Factor)是左子树的深度减去右子树的深度,它只可能是 -1, 0, 1平衡二叉树(也称AVL树)的深度为O(log N)(其中N为结点个数)它的平均查找长度也是O(log N)平衡二叉树及平衡因子举例-1100-110平衡的二叉树1100不平衡的二叉树-1000-210 2-101 00不平衡二叉树及平衡因子举例二叉排序树转成平衡树示例设关键字序列为(13,24,37,90,53) 013-113 024 037 013-213-124 024 037 053 013 013 037 090 053-124 190-237-224(a)(b)(c)(d)(e)(f)(g)(h)2413375390二叉排序树转成平衡树失去平衡后进行调整的四种情况(1)单向右旋平衡处理当在左子树上插入左结点,使平衡因子由1增至2时(2)单向左旋平衡处理(上例从图(d)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 香港中文大学(深圳)《工程地质及水文地质》2024-2025学年第二学期期末试卷
- 2026年3月广东深圳市第二职业技术学校面向社会选聘专业教师3人笔试模拟试题及答案解析
- 2026安徽黄山市第三人民医院招聘工作人员6人笔试备考题库及答案解析
- 2026福建龙岩市连城县冠豸山风景区管委会下属事业单位选拔2人考试备考题库及答案解析
- 2026中国农业科学院农业经济与发展研究所“财政金融创新与农村改革”创新团队编制外科研助理招聘2人笔试备考试题及答案解析
- 单位内部考勤保管制度
- 信用信息内部审核制度
- 政法委机关内部管理制度
- 事故内部隐患奖励制度
- 情报机构内部控制制度
- 自考国际市场营销学
- 工艺联锁图识读
- YC/T 227-2007光滑工件退刀槽
- 妊高症病人麻醉精品课件
- 《绿色建筑概论》整套教学课件
- 班主任班级管理(课堂)课件
- 数学第一章数据描述性分析课件
- 《美学》课件(第1-8讲)教学提纲
- 森林防火整改报告记录
- 《海洋里的好伙伴》课件
- 中国文化概论(第三版)全套课件
评论
0/150
提交评论