查找与散列结构(本硕博与信工).ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
查找与散列结构(本硕博与信工)

2000年1月25日 北京理工大学 / 主要内容 静态查找表 动态查找表 哈希表 第16章 查找与散列结构 查找表:由同一类型的数据元素(或记录)构成的集合。 查找表的基本操作 1) 查询某个“特定的”数据元素是否在表中 2) 检索某个“特定的”数据元素的各种属性 3) 插入一个数据元素 4) 删去某个数据元素 静态查找表:只作查询和检索操作的查找表。 动态查找表:在查找过程中同时作插入或删除操作的查找表。 第16章 查找与散列结构 记录:由若干数据项构成的数据元素。 关键字:能标识一个数据元素(或记录)的数据项。 主关键字:能唯一地标识一个记录的关键字。 次关键字:用以识别若干记录的关键字。 第16章 查找与散列结构 查找:根据给定的某个值,在查找表中确定一个其关键字等于给定值的记录或数据元素,若表中存在这样的记录,则称查找成功,查找结果为该记录在查找表中的位置;否则称为查找不成功,查找结果为0或NULL。 第16章 查找与散列结构 查找方法评价:平均查找长度 平均查找长度ASL ( Average Search Length):为确定记录在表中的位置,需和给定值进行比较的关键字的个数的期望值叫查找算法的平均查找长度。 用于度量查找算法的效率 查找算法的基本操作:比较 设查找成功的概率为1( ?Pi=1 ) 平均查找长度ASL = ?PiCi Ci:查找第 i 个记录所需的比较次数 Pi:查找第 i 个记录的概率 第16章 查找与散列结构 静态查找 在指定的表中查找某一个“特定”的数据元素是否存在,检索某一个“特定”数据元素的各种属性。 动态查找 在查找的过程中同时插入表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素。 16.1 静态查找表 静态查找 顺序表的查找:顺序查找 有序表的查找:折半查找 索引顺序表的查找:分块查找 16.1 静态查找表 查找表 用线性表表示L1=(45,61,12,3,37,24,90,53,98,78) 用顺序表表示静态查找表 用线性链表表示静态查找表 查找方法:顺序查找 16.1 静态查找表-顺序表查找 顺序表结构定义 struct SSTable { ElemType *elem; // 0号单元留空 int length; }; 16.1 静态查找表 int Search_Seq ( SSTable ST, KeyType key ) { //在顺序表ST中顺序查找其关键字等于key的数据元素。若找到,则函数值为该元素在表中的位置,否则为0。 ST.elem[0].key = key; for ( i=ST.length; !EQ(key, ST.elem[i].Key); --i ); return i; // 若表中不存在待查元素, i=0 } //Search_Seq 16.1 静态查找表 例1:在下表中查找 key = 8 的结点。 16.1 静态查找表 特点 无排序要求; 存储结构:顺序、链式; 16.1 静态查找表-有序表查找 查找表:用有序表表示 查找方法:折半查找(二分查找) 查找过程:先确定待查记录所在的范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。 例:有原始查找表 {45,61,12,3,37,24,90,53,98,78} 为进行折半查找,需要先进行排序: L=(3,12,24,37,45,53,61,78,90,98) 16.1 静态查找表-有序表查找 例:查找 Key=24 的记录。 16.1 静态查找表-有序表查找 int Search_Bin ( SSTable ST, KeyType key ) { //在有序表ST中折半查找法查找其关键字等于key的数据元素。若找到,则返回该元素在表中的位置,否则返回0。 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 16.1 静态查找表-有序表查找 例1:在下表中查找 ke

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档