1、折半查找的查找过程是:先确定待查记录所在区间,然后逐步缩小范围至到找到或者找不到该记录为止。
2、折半查找的性能分析可以由判定树得出,折半查找在查找成功时给定值进行比较的关键字个数至多为⌊log_2 ⌋
*/
//折半查找法的非递归形式
int Search_Bin ( SSTable ST, KeyType kval ) {
low = 1; high = ST.length; // 置区间初值
while (low <= high) {
mid = (low + high) / 2;
if ( kval == ST.elem[mid].key )
return mid; // 找到待查元素
else if ( kval < ST.elem[mid].key) )
high = mid - 1; // 继续在前半区间进行查找
else low = mid + 1; // 继续在后半区间进行查找
}
return 0;
}
//折半查找法的递归形式
int b_search(int elem[], int low, int high, int kval)
//在数组elem的下标范围为low~high(low>0)中查找kval,若查不到则返回0.
{
int mid;
if(low>high)
return -1;
else{
mid = (l