chapter08_查找.ppt

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

查找的基本概念 查找的基本概念 基于线性表的查找法 顺序查找法 顺序查找法 顺序查找法 基于线性表的查找法 二分查找法 二分查找法 二分查找法 基于树的查找法 二叉排序树的类型定义 二叉排序树的查找 例:已知二叉排序树如下,查找是否存在关键字为28的结点。 二叉排序树的插入 例:已知一组序列为{45,24,53,12,28,90},请将其依次插入到二叉排序树中。 二叉排序树的删除 二叉排序树的删除 二叉排序树的删除 二叉排序树的删除 二叉排序树的删除 计算式查找法——哈希法 哈希函数的构造方法 处理冲突的方法 例:已知一组关键字序列(19,14,23,01,68,20,84,27,55,11,10,79),按哈希函数H(key)=key%13和线性探测处理冲突构造哈希表ht[0..15],请画出构造好的哈希表。 处理冲突的方法 例:已知一组关键字序列(19,14,23,01,68,20,84,27,55,11,10,79),按哈希函数H(key)=key%13和链地址法处理冲突构造哈希表ht[0..12],请画出构造好的哈希表。 哈希表的查找过程 哈希法性能分析 查找 8.1 查找的基本概念 8.2 基于线性表的查找法 8.3 基于树的查找法 8.4 计算式查找法——哈希法 8.5 总结与提高 习题 实习题 列表:由同一类型的数据元素(或记录)构成的集合,可利用任意数据结构实现。 关键字:数据元素的某个数据项的值,用它可以标识列表中的一个或一组数据元素。 如果一个关键字可以唯一标识列表中的某一个数据元素,则称其为主关键字,否则为次关键字。 查找:根据给定的关键字值,在特定的列表中确定一个其关键字与给定值相同的数据元素,并返回该数据元素在列表中的位置。 (1) 静态查找:在查找过程中只对数据元素进行查找。 (2) 动态查找:在查找的同时,插入找不到的元素,或从查找表中删除已查到的某个元素,即允许表中元素变化。 平均查找长度:未确定数据元素在列表中的位置,需和给定值进行比较的关键字个数的期望值,称为查找算法在查找成功时的平均查找长度。 对于长度为n的列表,查找成功时的平均查找长度为: 其中:Pi为查找列表中第i个数据元素的概率,Ci为找到列表中第i个数据元素时,已经进行过的关键字比较次数。 所以,等概率情况下: 特点:用所给关键字与线性表中各元素的关键字逐个比较,直到成功或失败。 顺序查找法 存储结构:通常为顺序结构,也可为链式结构。 顺序结构数据类型的定义 #define SIZE 20 typedef struct element{ KeyType key; OtherType other_data; }RecordType; typedef struct list{ RecordType r[SIZE+1]; int len; }RecordList; 算法思想 (1) 在表的一端设置一个称为“监视哨”的附加单元,存放要查找元素的关键字。 (2) 从表的另一端开始查找,如果在“监视哨”找到要查找元素的关键字,返回相应下标,否则返回失败信息。 学号 姓名 专业 班级 入学成绩 家庭住址 key other_data 21 88 05 19 92 37 56 13 80 64 0 10 9 8 7 6 5 4 3 2 1 key int SeqSearch(RocordType list, KeyType key){ list.r[0]=key; i=list.len; while(list.r[i]!=key) i--; return i; } i i i 算法分析 (1) 查找第n个数据元素,需要比较1次; (2) 查找第n-1个数据元素,需要比较2次; (3) 依此类推,查找第i个数据元素,需要比较n-i+1次,即Ci=n-i+1。 折半查找法又称为二分查找法,这种方法对待查找的列表有两个要求 折半查找法 存储结构:必须为顺序结构且有序 顺序结构数据类型的定义 #define SIZE 20 Typedef struct element{ KeyType key; OtherType other_data; }RecordType; typedef struct list{ RecordType r[SIZE+1]; int len; }RecordList; len-1 0 9 97 91 88 82 79 56 37 27 13 12 low high (1) 设置两个位置指示器low和high分别指向当前查找范围的两个端点 (2) 计算mid的位置,mid=(low+high)/2 (3) 比较查找关

文档评论(0)

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

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

1亿VIP精品文档

相关文档