数据结构:第六章 查找.pdf

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 查找 (Chapter 6. Searching) 主要内容:  查找的定义和基本概念  静态查找表(线性表的查找) 动态查找表(树表的查找)  哈希表 §6.1 引言 • 查找表(search table):同类数据元素的集合。 • 关键字(key) 能唯一的标识一个数据元素,则称为主关键字(primary key),反之则为次关键字(secondary key)。 • 查找(searching) 在查找表中找寻关键字等于给定值的数据元素(或 记录)。 查找成功 查找不成功 • 在查找表上的操作: (1)查询是否在查找表中 (2)检索各种属性 (3)插入一个数据元素 (4)删去某个数据元素 • 静态查找(static search table): 不涉及插入、删除的操作 • 动态查找(dynamic search table): 四种操作都要做 • 查找结构 为了提高查找效率,专门为查找操作设置的数据结 构。(弱化逻辑结构) • 本章讨论的查找结构 : ⑴ 线性表:适用于静态查找,主要采用顺序查找 技术、折半查找技术。 ⑵ 树表 :适用于动态查找,主要采用二叉排序树 的查找技术。 ⑶ 散列表(哈希表):静态查找和动态查找均适 用,主要采用散列技术。 • 如何评价一个查找算法的优劣? 查找算法中最基本的操作是:关键码和给定值的比较。 平均查找长度(average search length) n ASL P C Pi :查找表中第i个记录的概率 i i i 1 C :比较次数。 n :表长。 §6.2 线性表查找 6.2.1 顺序查找 已知有n个数的序列,查找指定数值key是否在该序列 中,如果存在,找出该数值在序列中的位置。 查找表的顺序存储结构 #define MaxNUM datatype data[ MAXNUM ] ; int n; int Seq_Search ( datatype data[ ] , keytype kx , int n ) { int i ; i = 0; while ( i<n && data[i] != kx ) i++; return i; //找不到时i 为n } 0 1 2 3 4 5 6 7 8 9 10 5 13 19 21 37 56 64 75 80 88 92 基本思想: 设置顺序表的第一个存储单元为 “哨兵”,依次从序 列尾进行比较,直到比较相等。 监视哨 i i a[] 64 21 37 88 19 92 05 64 56 80 75 13 0 1 2 3 4 5 6 7 8 9 10 11 kval = 64 n

文档评论(0)

学习让人进步 + 关注
实名认证
内容提供者

活到老,学到老!知识无价!

1亿VIP精品文档

相关文档