索引存储结构和分块(索引)查找

本文介绍了索引存储结构,它由数据表和索引表组成,索引表中的每一项包括关键字和地址。分块查找是介于顺序查找和二分查找之间的一种方法,适用于数据分块有序的情况。通过对数据表进行分块,抽取最大关键字构建索引表,以提高查找效率。分块查找的时间复杂度介于顺序查找和二分查找之间。
摘要由CSDN通过智能技术生成

索引存储结构
索引存储结构=数据表+索引表
索引表(index blocked table)中的每一项称为索引项,索引项的一般形式:(关键字,地址)
举个例子:
在这里插入图片描述
分块查找的基本思想
分块查找又称分块索引查找(index blocked search)是一种介于顺序查找和二分查找之间的查找方法。其基本思想是:
(1)将数据表str[0…n-1]均分为b块,前b-1块中记录个数为s=n/b,最后一块即第b块的记录数小于等于s;
(2)每一块中的关键字不一定有序,但前一块中的最大关键字必须小于后一块中的最小关键字,即要求表是“分块有序”的;
(3)抽取各块中的最大关键字及其起始位置构成一个索引表IDX[0…b-1],即IDX[i](0≤i≤b-1)中存放着第i块的最大关键字及该块在表R中的起始位置。由于表R是分块有序的,所以索引表是一个递增有序表。
举个例子:设有一个线性表,其中包含25个记录,其关键字序列为:8,14,6,9,10,22,34,18,19,31,40,38,54,66, 46,71,78,68,80,85, 100, 4,88,96,87。假设将25个记录分为5块,每块中有5个记录,该线性表的索引存储结构如下图所示。
在这里插入图片描述
分块查找的算法基本上是顺序查找和二分查找的结合体。读者体会一下下面代码:

#include <stdio.h>
#define Max 30//改 
#define KeyType int //改 
#define InfoType char//改 
typedef struct 
{
     
   KeyType key;        //关键字的数据类型
   InfoType data;       //其他数据
}NodeType;
t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值