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;
}