给定下列算法,回答下列问题。
intBinSearch(SeqListR,ReyTypek,intn)
{
intlow=l,mid,high=n;
while(10w<=high){
mid=(low+high)/2;
if(R[mid].key==k)
returnmid;
if(R[mid].key>k)
high=mid-1;
elselow=mid+1;
}
return0;
}
(1)给定一组关键字R=(28,35,47,55,66,73,86,88,91,94,101),k=55,那么循环执行几次后结束,返回值为多少?
(2)试描述该算法的功能。
【正确答案】:(1)给定一组关键字R=(28,35,47,55,66,73,86,88,9l,94,101),k=55,那么循环执行3次后结束,返回值为4。 (2)该算法为二分查找的非递归算法。 解析:该程序为二分查找的非递归算法。对给定的关键字R=(28,35,47,55,66,73,86,88,91,94,101)查找关键字55时,需要进行3次比较得出结果,也就是算法中的循环要执行3次,返回值为关键字所在的下标4。