阅读以下说明、C函数和问题,回答问题1和问题2将解答填入答题纸的对应栏内。
当数组中的元素已经排列有序时,可以采用折半查找(二分查找)法查找一个元素。下面的函数biSearch(int r[],int low,int high,int key)用非递归方式在数组r中进行二分查找,函数biSearch_rec(int r[],int low,int high,int key)采用递归方式在数组r中进行二分查找,函数的返回值都为所找到元素的下标;若找不到,则返回-1。


【问题1】
请填充C函数1和C函数2中的空缺,将解答填入答题纸的对应栏内。
【问题2】
若有序数组中有n个元素,采用二分查找法查找一个元素时,最多与(7)个数组元素进行比较,即可确定查找结果。
备选答案:
A.?log2n+1?
B.?n/2?
C.n-1
D.n
正确答案及解析
正确答案
解析
(1)low<=high
(2)high=mid-1
(3)low=mid+1
(4)low<=high
(5)low,mid-1
(6)mid+1,high
解析:(1)表示二分法可以继续进行;
(2)递归调用左半部分;
(3)递归调用右半部分;
(4)表示二分法可以继续进行;
(5)递归调用左半部分;
(6)递归调用右半部分;
(7)对有序表,根据二分查找法定义,每次比较之后问题规模都会减小一半,所以2k=n,解得k=log2n,向下取整,又因为最后只剩一个元素时,也要执行查找过程,所以+1。





