2017年下半年程序员考试下午真题(4)
试题四(共 15 分〉
阅读以下说明、 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】
int biSearch(int r[],int low,int high,int key)
//r[low..high] 中的元素按非递减顺序排列
//用二分查找法在数组r中查找与key相同的元素
//若找到则返回该元素在数组r的下标,否则返回-1
int mid;
while(____){
mid = (low+high)/2 ;
if (key ==r[mid])
Return mid;
else if (key
else
____________;
}/*whi1e*/
retum-1;
}/*biSearch*/
【问题1 】(12分)
请填充 C 函数1和C函中2中的空缺,将解答填入答题纸的对应栏。
【问题2 】(3分)
若有序数组中有n个元素,采用二分查找法查找一个元素时,最多与—个数组元素进行比较,即可确定查找结果。
(7)备选答案
A. [log2(n+1)]
B. [n/2]
C. n-1
D. n
从下4列的 2 道试题(试题五至试题六)中任选1道解答。请在答题纸上的指定位置处将所选择试题的题号框涂黑。若多涂或者未涂题号框,则对题号最小的一道试题进行评分。
各省软考办 | ||||||||||