算法复习-查找(3)-分块查找法

分块查找:

分块查找又称为索引顺序查找,其数据结构可以简单地描述为:分块查找把线性表分成若干块,每一块中的元素存储顺序是任意的,但是块与块之间必须按照关键字大小有序排列,即前一块中的最大关键字要小于后一块的最小关键字。
对顺序表进行分块查找需要额外建立一个索引表,表中的每一项对应线性表中的一块.

//索引表定义
typedef struct {
  int key;  //对应块的最大关键字
  int low, high; //指向本块的第一个元素和最后一个元素.
}

显然索引表的所有索引项都是按照其关键字递增排序的。

算法描述:

分块查找分为两步进行:首先确定待查找的元素属于哪一块,然后在块内精准查找该元素。
由于索引表是递增有序的,因此第一步采用二分查找。块内元素一般个数较少,因此第二步采用顺序查找即可。

ASL分析:

分块查找实际上进行两次查找,整个算法的ASL是两次查找的ASL之和,即二分查找ASL+顺序查找ASL

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文...
    北方蜘蛛阅读 7,998评论 1 4
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 11,426评论 0 13
  • 原文出处:http://www.cnblogs.com/maybe2030/p/4715035.html引文出处:...
    明教de教主阅读 13,011评论 0 7
  • 目录 [1. 顺序查找][2. 二分查找][3. 插值查找][4. 斐波那契查找][5. 树表查找][6. 分块查...
    jiangmo阅读 18,024评论 4 6
  • 一、相关定义 查找——查找就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。所有这些...
    开心糖果的夏天阅读 4,951评论 0 8

友情链接更多精彩内容