知识大全 查找 - 线性表的查找 - 分块查找

Posted 结点

篇首语:得意犹堪夸世俗,诏黄新湿字如鸦。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 查找 - 线性表的查找 - 分块查找相关的知识,希望对你有一定的参考价值。

  分块查找

  分块查找(Blocking Search)又称索引顺序查找 它是一种性能介于顺序查找和二分查找之间的查找方法

   二分查找表存储结构

  二分查找表由 分块有序 的线性表和索引表组成

  ( ) 分块有序 的线性表

  表R[ n]均分为b块 前b 块中结点个数为

> 第b块的结点数小于等于s;每一块中的关键字不一定有序 但前一块中

  的最大关键字必须小于后一块中的最小关键字 即表是 分块有序 的

  ( )索引表

  抽取各块中的最大关键字及其起始位置构成一个索引表ID[l b] 即

  ID[i]( ≤i≤b)中存放第i块的最大关键字及该块在表R中的起始位置 由于表R是分块有序的 所以索引表是一个递增有序表

  【例】下图就是满足上述要求的存储结构 其中R只有 个结点 被分成 块 每块中有 个结点 第一块中最大关键字 小于

  第二块中最小关键字 第二块中最大关键字 小于第三块中最小关键字

  

>

   分块查找的基本思想

  分块查找的基本思想是

  ( )首先查找索引表

  索引表是有序表 可采用二分查找或顺序查找 以确定待查的结点在哪一块

  ( )然后在已确定的块中进行顺序查找

  由于块内无序 只能用顺序查找

   分块查找示例

  【例】对于上例的存储结构

  ( )查找关键字等于给定值K= 的结点

  因为索引表小 不妨用顺序查找方法查找索引表 即首先将K依次和索引表中各关键字比较 直到找到第 个关键宇大小等于K的

  结点 由于K< 所以关键字为 的结点若存在的话 则必定在第二块中;然后 由ID[ ] addr找到第二块的起始地址 从该地址

  开始在R[ ]中进行顺序查找 直到R[ ] key=K为止

  ( )查找关键字等于给定值K= 的结点

  先确定第二块 然后在该块中查找 因该块中查找不成功 故说明表中不存在关键字为 的结点

   算法分析

  ( )平均查找长度ASL

  分块查找是两次查找过程 整个查找过程的平均查找长度是两次查找的平均查找长度之和

  ①以二分查找来确定块 分块查找成功时的平均查找长度

  ASL blk =ASL bn +ASL sq ≈lg(b+ ) +(s+ )/ ≈lg(n/s+ )+s/

  ②以顺序查找确定块 分块查找成功时的平均查找长度

  ASL blk =(b+ )/ +(s+ )/ =(s + s+n)/( s)

  注意

  

>

  【例】若表中有 个结点 则应把它分成 个块 每块中含 个结点 用顺序查找确定块 分块查找平均需要做 次比

  较 而顺序查找平均需做 次比较 二分查找最多需 次比较

  注意

  分块查找算法的效率介于顺序查找和二分查找之间

  ( )块的大小

  在实际应用中 分块查找不一定要将线性表分成大小相等的若干块 可根据表的特征进行分块

  【例】一个学校的学生登记表 可按系号或班号分块

  ( ) 结点的存储结构

  各块可放在不同的向量中 也可将每一块存放在一个单链表中

  ( )分块查找的优点

  分块查找的优点是

  ①在表中插入或删除一个记录时 只要找到该记录所属的块 就在该块内进行插入和删除运算

  ②因块内记录的存放是任意的 所以插入或删除比较容易 无须移动大量记录

  分块查找的主要代价是增加一个辅助数组的存储空间和将初始表分块排序的运算

cha138/Article/program/sjjg/201311/23846

相关参考

知识大全 查找-线性表的查找-顺序查找

  顺序查找(SequentialSearch)  在表的组织方式中线性表是最简单的一种顺序查找是一种最简单的查找方法  顺序查找的基本思想  基本思想是从表的一端开始顺序扫描线性表依次将扫描到的结点

知识大全 查找 - 线性表的查找 - 二分查找(一)

  二分查找  二分查找(BinarySearch)  二分查找又称折半查找它是一种效率较高的查找方法  二分查找要求线性表是有序表即表中结点按关键字有序并且要用向量作为表的存储结构不妨设有序表是递增

知识大全 查找 - 线性表的查找 - 二分查找(二)

  二分查找判定树  二分查找过程可用二叉树来描述把当前查找区间的中间位置上的结点作为根左子表和右子表中的结点分别作为根的左子树和  右子树由此得到的二叉树称为描述二分查找的判定树(DecisionT

知识大全 数据结构之分块查找

  分块查找(BlockingSearch)又称为索引顺序查找其性能介顺序查找和二分查找之间  分块查找的基本思想分块查找要求把顺序表分成若干块每一块中的键值存储顺序是任意的但要求分块有序即前一块中的

知识大全 查找 - 树上的查找 - 二叉排序树(一)

  当用线性表作为表的组织形式时可以有三种查找法其中以二分查找效率最高但由于二分查找要求表中结点按关键字有序且不能用链表作存储结构因此当表的插入或删除操作频繁时为维护表的有序性势必要移动表中很多结点这

知识大全 数据结构之线性表的逻辑结构[3]

  初始条件线性表L存在  操作结果在表L中查找值为x的数据元素其结果返回在L中首次出现的值为x的那个元素的序号或地址称为查找成功;否则在L中未找到值为x的数据元素返回一特殊值表示查找失败  ⑸插入操

知识大全 线性表 - 链式存储结构- 单链表的运算(四)

  单链表的查找运算  ()按序号查找  ①链表不是随机存取结构  在链表中即使知道被访问结点的序号i也不能像顺序表中那样直接按序号i访问结点而只能从链表的头指针出发顺链域  next逐个结点往下搜索

知识大全 数据结构考研分类复习真题 第九章 集合[13]

  在索引顺序表中实现分块查找在等概率查找情况下其平均查找长度不仅与表中元素个数有关而且与每块中元素个数有关【上海交通大学一】  顺序查找法适用于存储结构为顺序或链接存储的线性表【山东大学一 

知识大全 单链表的查找运算

单链表的查找运算()按序号查找①链表不是随机存取结构    在链表中即使知道被访问结点的序号i也不能像顺序表中那样直接按序号i访问结点而只能从链表的头指针出发顺链域nex

知识大全 数据结构之单链表基本运算的实现[5]

  ()按值查找  单链表的按值查找是在线性表存在的情况下查找值为x的数据元素若成功返回首次出现的值为x的那个元素所在结点的指针;否则未找到值为x的数据元素返回NULL表示查找失败  算法思路从链表的