第单元集合.pptVIP

  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文档。上传文档
查看更多
第单元集合

第9章 集 合 主要内容: 概述 线性表上的查找 索引表上的查找 树表上的查找 哈希表 § 9.1 概述 查找表 主关键字 次关键字 平均查找长度ASL §9.2 线性表上的查找 typedef struct {int key; …… }recType; 一、顺序查找 二、有序表的查找 折半查找 设查找区域的首尾下标分别用变量low和high表示(初值分别为0和n-1),将待查关键字x和该区域的中间元素 (其下标mid的值为low和high的算术平均值,即(low+high) /2 的关键字进行比较,根据比较的结果分别作如下处理: (1) x==L-data[mid]: 查找成功,返回mid的值。 (2) xL-data[mid]: 说明元素只可能在左边区域(下标从low到mid-1),因此应在此区域继续查找。 (3) xL-data[mid]: 说明元素只可能在右边区域(下标从mid+1到high) ,因此应在此区域继续查找。 相应算法如下: int bin_search(SSTable ST, KeyType k) { int mid,low=1,high=ST.length; //初始化查找区域 while ( low=high) { mid=(low+high)/ 2; if (k==ST.elem[mid].key) return mid; else if (k ST.elem[mid].key) high=mid-1; else low=mid+1; } return 0; //返回查找失败的标志 } 算法分析 采用二分查找的判定树――一种二叉树的形式来描述其查找过程。其构造过程如下:对当前的查找区域low~high,将其中间元素的下标mid作为根结点的值,将左边区域(即low~mid-1)的查找过程所对应的二叉树作为其左子树,将右边区域(即mid+1~high)的查找过程所对应的二叉树作为其右子树。 构造有20个元素的二分查找判定树,并求解下面的问题 各元素的查找长度最大是多少? 查找长度分别为1,2,3,4,5 的元素各有多少?具体是哪些?(假设下标从0开始) 查找第13个元素依次需要比较哪些元素? §9.3 索引表上的查找 在许多情况下,可能会遇到这样的表:整个表中的元素未必(递增/递减)有序,但若划分为若干块后,每一块中的所有元素均小于(或大于)其后面块中的所有元素。称这种特性为分块有序。 §9.4 树表上的查找 一、二叉排序树是一棵二叉树,或者为空,或者满足如下条件: (1)若左子树不空,则左子树上所有结点的值均小于根的值。 (2)若右子树不空,则右子树上所有结点的值均大于根的值。 (3)其左右子树均为二叉排序树。 二叉排序树查找 二叉排序树的中序序列是递增序列。 (1)x==T-key: 查找成功,返回指针T即可。 (2)xT-data: 元素只可能在左子树中,因而需在左子树中继续查找。 (3)xT-data:元素只可能在右子树中,因而需在右子树中继续查找。 BSTree BstSearch(BSTree T,int k) { P=T; while (P!=NULL) if(x==P-key) return P; else if (xP-key) P=P-lchild;  else P=P-rchild; return P; } 二叉排序树的插入和删除 例如,若输入序列为 100,80,85,70,130,150,120,90,50,110,160, 则可生成二叉排序树如图所示: 二、二叉平衡树 定义、BF 二叉平衡树的调整 四种类型 LL LR RL RR §9.5 哈希表查找 一、基本概念 哈希表:某个关键字K,通过一个函数H计算求其地址,以这种方式个构成的表即为(又称散列表)。 H(K)——哈希地址, H(哈希函数)—表与元素关键字之间映射关系的函数。 冲突:若K1≠K2,但H(K1)=H(K2)这时我们称发生了。 二、构造哈希函数的方法 1.直接定址法:H(k)=a*k+b (a,b为常数)。 这种方法是一种较为直观的方法。 2.除留余数法:取关键字被某个不大于表长m的数P除后所得的余数作为哈希地址。 即H(k)=k % P(P≤m) 这是一种较简单,也是较常见的构造方法。一般来说,在P取值为素数(质数)时,冲突的可能性相对较少。 3.平方取中法:取关键字平方后的中间几位作为散列地址。 4.折叠法:这是在关键字的位

文档评论(0)

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

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

1亿VIP精品文档

相关文档