typedef struct
{
int key;
int low;
int high;
}IDXType; //索引块
int BlkSearch(int* data,IDXType* idx,int m,int key) //m为索引块的长度,key为要查找的值
{int low = 0;
int high = m-1;
int mid;
int i;
int j;
int find = 0;
while(low<=high&&!find) //二分查找索引表
{
mid = (low+high)/2;
if(key < idx[mid].key)
high = mid-1;
else if(key >idx[mid].key)
low = mid+1;
else
{
low = mid;
find = 1;
}
}
if(low < m) // k小于索引表内的最大值
{
i = idx[low].low; //索引表中定块的起始地址
j = idx[low].high; // 索引表中定块的结束地址
}
while(i<=j&&data[i] != key)
i++;
if(i>j)
return -1;
else
return i;
}
本文介绍了一种结合二分查找与索引块搜索的数据查找方法,通过定义索引结构体IDXType来辅助实现高效查找。具体步骤包括:1. 使用二分查找法在索引表中定位目标值;2. 在找到的索引块内进行线性查找。
1600

被折叠的 条评论
为什么被折叠?



