#include <stdio.h>
#include "stdlib.h"
#include "stdbool.h"
//分块查找
/*索引表*/
typedef struct {
int val;
int low,high;
}Index;
Index dex[10]={{10,0,1}, {20,2,5}, {30,6,8}, {40,9,9}};
/*b树*/
struct Node{
int key[4];
struct Node *child[5];
int num;//key个数
};
int block_search(int a[],int key);
int main(){
int a[10]={7,10,13,19,14,20,27,22,30,40};
int b=block_search(a,27);
return 0;
}
int binary_search(int a[],int n,int key){
int low=0,high=n-1,mid;
while (low<=high){//当low>high的时候退出循环
mid=(low+high)/2;
if (a[mid]==key){
return mid;
}
if (a[mid]<key)
low = mid+1;
if (a[mid]>key)
high = mid-1;
}
return -1;
}
//分块查找
int block_search(int a[],int key){
int i;
for (i = 0; i < 4; ++i) {
if (key <= dex[i].val){
break;
}
}
for (int j = dex[i].low; j <= dex[j].high ; ++j) {
if (key==a[j])
return j;
}
return -1;
}