清华大学朱明方数据结构6.pptVIP

  • 3
  • 0
  • 约3.19万字
  • 约 94页
  • 2016-12-27 发布于江苏
  • 举报
第六章 查找 6.1 顺序表查找 顺序查找 对分查找 6.2 索引查找 索引存储结构 分块查找 索引文件 6.3 散列查找 散列的概念 散列函数 冲突处理方法 散列文件 6.1 顺序表查找 查找— 在不同的表结构中查找指定元素。 查找到指定元素— 返回该元素在表中的位置。 若找不到满足条件的元素— 查找失败,返回特定值。 不同的表结构采用不同的查找方法。 元素(记录)的关键字— 可以标识一个元素(记录)的数据项值。 一. 顺序查找 适用情况:对无序表的查找。 查找方法:从表首开始,把表中元素的关键字逐个与给定值k 比较,若某个元素的关键字与k值相等则查找成功。 否则,查找失败。 算法描述:P25 算法的空间复杂度: in place 时间复杂度:平均查找长度(平均比较次数) O(n) 6.1 顺序表查找 二. 对分查找 条件:有序顺序表 基本思路:减半递推 方法:每次给定值与表中间项的关键字进行比较,根据 比较结果确定下一步的比较项。 算法描述 P130 空间复杂度: in place 时间复杂度:查找一个元素最多比较次数为:?log2n?+1 其复杂度为 O(log2n) 分析查找过程知:对分查找 → 判定过程 → 判定树(二叉树)。 由对分查找判定树可更直观地看出其最坏情况的时间复杂度:O(log2n) 对分查找是一个递归过程。递归算法描述? 优点:查找速度快于顺序查找。 适用:表中元素相对稳定的有序顺序表 6.2 索引查找 一. 索引存储结构 1. 索引存储的概念 基本思想: ? 将有n个结点的线性表划分为m个子表,分别存储各子表; ? 另设一个有m个结点(索引项)的索引表,每个结点存子表第 一个结点的地址及相关信息。 线性表划分原则: (1) 具有某种性质Pi的结点归并到子表 li 中; (2) m个子表的结点结合在一起,正好构成原线性表L的全部结点。 关键:找出满足上述原则的划分条件(函数关系)——索引函数。 设元素的关键字为k,若根据Pi有: i = g(k) 则,g—索引函数 ( i—子表序号, Pi—子表i的性质 )。 6.2 索引查找 一. 索引存储结构 1. 索引存储的概念 例如,要将标称值为200Ω,实际值为190~210 Ω的电阻 按实际测量值分为以下7组: l1——190~192 Ω 根据要求取索引函数: l2——193~195 Ω 假设测得10个电阻值为: l3——196~198 Ω R1: 193 Ω R2: 197 Ω R3: 191 Ω R4: 201 Ω l4——199~201 Ω R5: 207 Ω R6: 199 Ω R7: 204 Ω R8: 194 Ω l5——202~204 Ω R9: 208 Ω R10: 202 Ω l6——205~207 Ω 划分结果: l7——208~210 Ω l1 l2 l3 l4 l5 l6 l7 R3 R1 , R8 R2 R4 , R6 R7 , R10 R5 R9 6.2 索引查找 一. 索引存储结构 2. 索引存储方式 索引表——顺序表或链表 子表——顺序表或链表。 可以有四种不同的索引存储方式: (1) “顺序索引—顺序存储”——索引表顺序表,子表顺序表; (2) “顺序索引—链接存储”——索引表顺序表,子表链表; (3) “链接索引—顺序存储”——索引表链表,子表顺序表; (4) “链接索引—链接存储”——索引表链表,子表链表。 索引表特点:表不大,表中元素不常变动。 适合用顺序表来表示索引表。 6.2 索引查找 一. 索引存储结构 2. 索引存储方式 (1) 顺序索引——顺序存储方式 索引表——顺序表, 结点结构: 子表——顺序表,独立存放,子表之间无存储顺序要

文档评论(0)

1亿VIP精品文档

相关文档