已知静态査找表顺序存储结构的类型定义如下:
const int Maxsize = 20;
typedef struct
{
KeyType key; //关键字
… //其他域
}TableElem;
typedef struct
{
TableElem elem[Maxsize+1];
int n;
}SqTable;
设计实现有序表二分査找算法SearchBin(SqTable T, KeyType key)(假定有序表是按键值从小到大有序)。
【正确答案】:
INT SEARCHBIN(SQTABLE T,KEYTYPE KEY)
{   INT LOW,HIGH;
    LOW=1; HIGH = T.N;
    WHILE(LOW〈= HIGH){
        MID=(LOW+HIGH)/2;
        IF(KEY == T.ELEM[MID].KEY)RETURN MID;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;ELSE IF(KEY < T.ELEM[MID].KEY)HIGH = MID-1;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;ELSE LOW=MID+1;
&NBSP;&NBSP;&NBSP;&NBSP;}
&NBSP;&NBSP;&NBSP;&NBSP;RETURN 0;
}
【题目解析】:
二分查找(Binary Search)的查找过程为每次用给定值与处在表的中间位置的数据元素的键值进行比较,确定给定值的所在区间,然后逐步缩小查找区间。重复以上过程直至找到或确认找不到该数据元素为止。
