索引存储结构
索引存储结构=数据表+索引表
索引表(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