- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构-09 查找
9.1 静态查找表 9.1.1 顺序表的查找(Sequential Search) 9.1.2 有序表的查找-折半查找 9.1.4 索引顺序表查找 9.1 静态查找表 9.2 动态查找表 9.2 动态查找表 插入 生成 3. 删除 (1) P为叶子 (1) P为叶子 P只有左子树 P只有左子树 (3) P有两棵子树 (3) P有两棵子树 (3) P有两棵子树 4. 查找 最多:满二叉树 最少,递推: 当前高度为h,结点数又最少,则子树中一个高度为h-1,一个为h-2,并且子树结点也最少,所以: Nh = Nh-1 + Nh-2 +1 显然,N0=0(空树),N1=1(仅有根结点),于是 N2=2 N3=4 N4=7,… (3)删除 开放地址法open addressing 3.折叠法 若关键字位数较多,可将其分割成位数相同的若干段(最后一段的位数可以不同),段的长度取决于散列表的地址位数,然后将各段的叠加和(舍去进位)作为散列地址。 移位叠加:将各段的最低位对齐,然后相加(各段的先后顺序没有作用) 边界叠加:两相邻的段沿边界来回折迭,然后对齐相加。 4.平方取中法 取关键字平方(扩大差别)后的中间几位为散列函数地址。 平方后中间几位数和数的每一位相关,由此产生的散列地址也比较随机(均匀),所取位数由散列表的表长决定。 5.除余法 取适当正整数P,去除关键字,所得余数作为散列地址: H(key)=key%P 关键:选取适当的P。偶数、基数幂等不好。 一般P取小于或等于散列表长度m的某个最大素数。 特别地,如果散列表长度m本身就为素数,则取P=m。 若m较大,则P也可取合数,但一般要求其因子为较大的素数。如P=29×31=899等,这可避免找大素数的困难。 计算简单,不需知道关键字各位的分布规律,也不必关心关键字位数的多少,并且在许多情况下效果较好,因此,除余法是一种最常用的散列函数构造方法。 7. 随机法 选择一个随机函数,取关键值的随机函数值为散列地址: H(key)=random(key) 随机函数应为伪随机:对不同关键字得到随机结果,但对同一个关键字,每次运行时都应得到相同的结果;否则建表和以后的查找过程不能保证相同的散列地址。 6. 基数转换法 将关键字看成另一进制上的数,再转换成原来进制,取若干位作为散列地址。 一般取大于原来基数的数作转换基数(可扩大差别),并且两个基数要互素。 例如, (12057)10→ (12057) 13: (12057)13=1×134+2×133+0×132+5×131+7=33027 9.3.3 处理冲突的方法 “处理冲突” 就是为产生冲突的关键字寻找合适存放位置。 可分两大类:开放地址法和链地址法 失衡原因:在A的右孩子(R)的左子树(L)上插入结点,使A的平衡因子由?1变为?2。 调整操作:“提升”C为新子树的根;A下降为C的左孩子(B变为C的右孩子),同时将C原来的左子树CL调整为A的右子树,C原来的右子树CR调整为B的左子树。 (4)RL型调整 插入点也可能在CR 16 0 16 3 1 0 LR调整 7 3 16 0 0 0 7 3 11 0 1 -1 16 LL调整 3 7 16 9 0 0 0 -1 11 7 3 16 11 9 0 1 2 -2 16 3 7 0 -1 2 例 输入(16,3,7,11,9,26,18),生成平衡二叉树。 RL调整 RR调整 18 16 0 0 0 7 3 26 11 9 0 0 3 16 0 9 -1 7 11 26 -2 7 3 9 0 18 26 11 1 16 -1 3 7 11 26 9 16 0 -1 -1 -2 不会出现单枝最坏情况O(n),平均O(log2n)。 三、性能分析 例 对(3,4,2,5,1,7,6),比较一般和平衡二叉树的效率。 非平衡:ASL=(1+2+2+3+3+4+4)/7=19/7≈2.71 平衡:ASL=(1+2+2+3+3+3+3)=17/7≈2.43 6 5 2 1 7 4 3 2 1 7 6 5 3 4 例 高度为 h的AVL树最多、最少多少结点? 对外存数据,以树作文件的索引组织时,为减少访外次数,需要降低查找树的高度,这可采用多叉树,特别是平衡多叉树。 B树是一种平衡多叉查找树,常作索引,在文件系统中很有用。 9.2.2 B-树和B+树 一棵m阶的B-树,或是空树,或是满足以下条件的m叉树: (1)根至少有两个孩子(除非树中只有一个结点即根)。 (2)除根之外,每个内部结点有?m/2?~m个孩子。 (3)除叶子外,每个结点的关键字从小到大排列,孩子数比关键字个数多1。结点结构:(P0,K1,P1,K2,…,Pj?1,Kj,Pj
文档评论(0)