int Binary_Search ( S_TBL tbl,KEY kx ) |
{ /* 在表tbl 中查找关键码为kx 的数据元素,若找到返回该元素在表中的位置,否则,返回0 */ |
int mid,flag=0; |
low=1;high=length; /* ①设置初始区间*/ |
while ( low<=high ) /* ②表空测试*/ |
{ /* 非空,进行比较测试*/ |
mid= ( low+high ) /2; /* ③得到中点*/ |
if ( kx<tbl.elem[mid].key ) high=mid-1; /* 调整到左半区*/ |
else if ( kx>tbl.elem[mid].key ) low=mid+1; /* 调整到右半区*/ |
else { flag=mid; break ;} /* 查找成功,元素位置设置到flag 中*/ |
} |
return flag; |
} |