反馈
问题:
阅读以下说明、C函数和问题,回答问题1和问题2将解答填入答题纸的对应栏内。<br/><br/> 【说明】<br/>当数组中的元素已经排列有序时,可以采用折半查找(二分查找)法查找一个元素。下面的函数biSearch(int r[],int low,int high,int key)用非递归方式在数组r中进行二分查找,函数biSearch_rec(int r[],int low,int high,int key)采用递归方式在数组r中进行二分查找,函数的返回值都为所找到元素的下标;若找不到,则返回-1。<br/><br/> 【C函数1】<br/><br/> int biSearch(int r[],int low,int high,int key)<br/><br/> //r[low..high] 中的元素按非递减顺序排列<br/><br/> //用二分查找法在数组r中查找与key相同的元素<br/><br/> //若找到则返回该元素在数组r的下标,否则返回-1<br/><br/> {<br/><br/> int mid;<br/><br/> while((1) ) {<br/><br/> mid = (low+high)/2 ;<br/><br/> if (key ==r[mid])<br/><br/> return mid;<br/><br/> else if (key<r[mid])<br/><br/> (2) ;<br/><br/> else<br/><br/> (3) ;<br/><br/> }/*while*/<br/><br/> return -1;<br/><br/> }/*biSearch*/<br/><br/> 【C 函数 2】<br/><br/> int biSearch_rec(int r[],int low,int high,int key)<br/><br/> //r[low..high]中的元素按非递减顺序排列<br/><br/> //用二分查找法在数组r中查找与key相同的元素<br/><br/> //若找到则返回该元素在数组r的下标,否则返回-1<br/><br/> {<br/><br/> int mid;<br/><br/> if((4) ) {<br/><br/> mid = (low+high)/2 ;<br/><br/> if (key ==r[mid])<br/><br/> return mid;<br/><br/> else if (key<r[mid])<br/><br/> return biSearch_rec((5) ,key);<br/><br/> else<br/><br/> return biSearch_rec((6) ,key);<br/><br/> }/*if*/<br/><br/> return -1;<br/><br/> }/*biSearch_rec*/
选项 :
【问题:4.1】(12分)<br/> 请填充C函数1和C函数2中的空缺,将解答填入答题纸的对应栏内。
选项 :
【问题:4.2】(3分)<br/> 若有序数组中有n个元素,采用二分查找法查找一个元素时,最多与<span style='color:#FF6347;'>()</span>个数组元素进行比较,即可确定查找结果。<br/> (7)备选答案:<br/> A.[log2(n+1)] B.[n/2] C.n-1 D.n
答案: