第八查找.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文档。上传文档
查看更多
第八查找

第八章 查找 第八章 查找 8.1 静态查找表 8.1.1 顺序表的查找 8.1.2 有序表的查找 8.1.3 索引顺序表的查找 8.2 动态查找表 8.2.1 二叉树和平衡二叉树 8.2.2 B-树和B+树的结构 8.3 哈希表 8.3.1 什么是哈希表 8.3.2 哈希函数的构造方法 8.3.3 冲突的处理方法 第八章 查找 本章要点 “学生”表格 8.1 查找的基本概念 1.查找表(Search Table)  由同一类型的数据元素(或记录)构成的集合。 8.1 查找的基本概念 4.静态查找   对查找表只查询特定数据元素是否在表中或查询特定元素的各种属性,不对查找表作任何修改。 8.1 查找的基本概念 6.平均查找长度(衡量查找算法好坏的一个重要指标)   查找过程中,和给定值进行比较的关键字个数的期望值。 关键字类型说明 typedef float KeyType;//实型 typedef int KeyType;//整型 typedef char * KeyType;//字符串型 数据元素类型定义 typedef struct{ KeyType key;//关键字域 ……;//其它域 }ElemType; 8.2 静态查找表 8.2.1 无序表的查找 顺序查找算法(P217 算法9.1) int Search_Seq(SSTable ST,KeyType key){  ST.elem[0].key=key;//哨兵  for(i=ST.length;!EQ(ST.elem[i].key,key);    --i);  return i; }//Search_Seq 8.2.1 无序表的查找 特点:1)算法简单,适用面广    2)平均查找长度较大    3)在等概率情况下,ASL=(n+1)/2    4)若各结点被查找的概率不相同,应先查找概      率高的结点 8.2.2 有序表的查找 有序表:查找表按关键字有序。 8.2.2 有序表的查找 例:在11个数据元素{5 13 19 21 37 56 64 75 80 88 92}中查找关键字为21和85的数据元素。 8.2.2 有序表的查找 特点:1)只适用于关键字有序的顺序存储结构    2)平均查找长度为log2n(满二叉树P221) 3)最大比较次数为: ? log2n ? +1或「 log2(n+1) 折半查找算法( P220 算法9.2 ) int Search_Bin(SSTable ST,KeyType key){  low=1; high=ST.length;  while(low=high){   mid=(low+high)/2;   if EQ(key,ST.elem[mid].key) return mid;   else if LT(key,ST.elem[mid].key)high=mid-1;      else low=mid+1;  }  return 0; }//Search_Bin 8.2.2 有序表的查找 2.斐波那契查找 8.2.2 有序表的查找 3.插值查找   用插值的方法计算出一个与给定值比较的元素下标 8.2.2 有序表的查找 插值查找步骤:  根据key与ST.elem[i].key的比较结果,修改查找区间的上界、下界,重复进行,直到查找成功,或查找区间不存在,则查找失败。 8.2.3 索引顺序表的查找 索引顺序表查找(也称分块查找): 8.2.3 索引顺序表的查找 例:在查找表中查找key=65和key=111的数据元素。 8.2.3 索引顺序表的查找 索引表按关键字有序,可以利用顺序查找,也可用折半查找。 块中数据元素是任意存放的,则在块中只能是顺序查找。 8.3 动态查找表 8.3.1 二叉排序树 ( 查找树或搜索树) 8.3.1 二叉排序树 二叉排序树的查找步骤:  当二叉排序树T不空时,   1)将给定值key与根结点的关键字T-data比较   2)若key=T-data,则查找成功     若key<T-data,则继续在左子树中查找     若key>T-data,则继续在右子树中查找 二叉排序的查找(P228 算法9.5(a)) BiTree SearchBST(BiTree T,KeyType key){  if((!T)||(EQ(key,T-data.key)) return(T);  else if LT(key,T-data.key)      return(SearchBST(T-lchild,key));     else       return(SearchBST(T-rchild,key)); }//SearchBST

文档评论(0)

181****7127 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档