- 1、本文档共118页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构讲义 9.2 静态查找表 静态查找表结构 顺序查找 有序表的折半查找 9.2.2 顺序查找 顺序查找又称线性查找,是最基本的查找方法之一。其查找方法为:从表的一端开始,向另一端逐个按给定值kx与关键码进行比较,若找到,查找成功,并给出数据元素在表中的位置;若整个表检测完,仍未找到与kx相同的关键码,则查找失败,给出失败信息。 9.3 动态查找表 int InsertAVL(NodeType **t,ElemType e,Boolean *taller) { /*若在平衡的二叉排序树t中不存在和e有相同关键码的结点,则插入一个数据元素为e的*/ /*新结点,并反回1,否则反回0。若因插入而使二叉排序树失去平衡,则作平衡旋转处理,*/ /*布尔型变量taller反映t长高与否*/ if(!(*t)) /*插入新结点,树“长高”,置taller为TURE*/ { *t=(NodeType *)malloc(sizeof(NodeType)); (*T)-elem=e; (*t)-lc=(*t)-rc=NULL;(*t)-bf=EH;*taller=TRUE; }/*if*/ else { if(e.key==(*t)-elem.key) /*树中存在和e有相同关键码的结点,不插入*/ { taller=FALSE; return 0;} if(e.key(*t)-elem.key) { /*应继续在*t的左子树上进行*/ if(!InsertAVL(((*t)-lc)),e,taller)) return 0; /*未插入*/ if(*taller) /*已插入到(*t)的左子树中,且左子树增高*/ switch((*t)-bf) /*检查*t平衡度*/ {case LH: /*原本左子树高,需作左平衡处理*/ LeftBalance(t); *taller=FALSE;break; case EH: /*原本左、右子树等高,因左子树增高使树增高*/ (*t)-bf=LH; *taller=TRUE;break; case RH: /*原本右子树高,使左、右子树等高*/ (*t)-bf=EH; *taller=FALSE;break; } }/*if*/ else /*应继续在*t的右子树上进行*/ { if(!InsertAVL(((*t)-rc)),e,taller)) return 0; /*未插入*/ if(*taller) /*已插入到(*t)的左子树中,且左子树增高*/ switch((*t)-bf) /*检查*t平衡度*/ {case LH: /*原本左子树高,使左、右子树等高*/ (*t)-bf=EH; *taller=FALSE;break; case EH: /*原本左、右子树等高,因右子树增高使树增高*/ (*t)-bf=RH; *taller=TRUE;break; case RH: /*原本右子树高,需作右平衡处理 RightBalance(t); *taller=FALSE;break; } }/*else*/ }/*else*/ return 1; }/*InsertAVL*/ 【平衡树的查找分析】 在平衡树上进行查找的过程和二叉排序树相同,因此,在查找过程中和给定值进行比较的关键码个数不超过树的深度。那么,含有n个关键码的平衡树的最大深度是多少呢?为解答这个问题,我们先分析深度为h的平衡树所具有的最少结点数。 假设以Nh表示深度为h的平衡树中含有的最少结点数。显然,N0=0,N1=1,N2=2,并且Nh=Nh-1+Nh-2+1。这个关系和斐波那契序列极为相似。 利用归纳法容易证明:当h≥0时Nh =Fh+2 – 1,而约 等于 其中 则Nh约等于 反之,含有n个结点得平衡树得最大深度为 因此,在平衡树上进行查找的时间复杂度为O(logn)。 上述对二叉排序树和二叉平衡树的查找性能的讨论都是在等概率的前提下进行的。 则Nh约等于 反之,含有n个结点得平衡树得最大深度为 9.3.3 B-树和B+树 B-树是一种平衡的多路查找树,它在文件系统中很有用,是大型数据库文件的一种组织结构。数据库文件是同类型记录的值的集合,是存储在外存储器上的数据结构。因此,在数据库文件中按关键码查找记录,对数据库文件进行记录的插入和删除,就要对外存进行读、写
您可能关注的文档
- 安徽财经大学财务管理学课件第三章 基本财务估值模型.ppt
- 安徽财经大学财务管理学课件第十五章 财务分析.ppt
- 安徽财经大学法学院宪法学课件第二章 宪法的历史发展.ppt
- 安徽财经大学法学院宪法学课件第十六章 选举制度.ppt
- 安徽财经大学法学院宪法学课件第十七章 国家机构.ppt
- 安徽财经大学法学院宪法学课件第十三章 国家形式-下.ppt
- 安徽财经大学法学院宪法学课件第十四-十五章 公民的基本权利和义务.ppt
- 安徽财经大学法学院宪法学课件第一章 宪法的概念.ppt
- 安徽财经大学管理信息系统课件第三章 管理信息系统的技术基础.ppt
- 安徽财经大学管理学院企业战略管理课件:第六章 企业总体战略.ppt
文档评论(0)