折中法查找
#include <stdio.h>
typedef short W_INT2;
typedef char BYTE;
W_INT2 dtc_state_find(BYTE *state, BYTE subdtc,BYTE length);
int main()
{
BYTE number=0;
BYTE nub[10]={0x20,0x21,0x22,0x23,0x25,0x26,0x27,0x28,0x29,0x30};
BYTE state[20]={0x20,0x21,0x22,0x23,0x24,0x25,0x28,0x2c,0x2d,0x2e,0x60,0x61,0x62,0x63,0x64,0x65,0x68,0x6c,0x6d,0x6e};
BYTE length;
W_INT2 result;
length = sizeof(nub);
result=dtc_state_find(nub,0X30,length);
if(result==1)
{
printf("result is found/n");
}
else
printf("result is not found/n");
}
W_INT2 dtc_state_find(BYTE *state, BYTE subdtc,BYTE length)
{
BYTE middle =0 ;
BYTE start =0 ;
BYTE end = 0 ;
BYTE XX;
end = length-1;
XX = state[end-1];
if(subdtc > XX) return -1;
while(start<=end)
{
middle = (end + start)/2;
if(subdtc == state[middle])
{
return 1;
}
else if(subdtc < state[middle])
{
end = middle;
}
else
{
start = middle;
}
}
return -1;
}