题目详情

第四题 阅读以下说明、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。

【C函数1】

int biSearch(int r[],int low,int high,int key)

//r[low..high] 中元素按非递减顺序排列

//用二分查找法在数组r中查找与key相同元素

//若找到则返回该元素在数组r下标,否则返回-1

{

int mid;

while((1)) {

mid = (low+high)/2 ;

if (key ==r[mid])

return mid;

else if (key<r[mid])

(2);

else

(3);

}/*while*/

return -1;

}/*biSearch*/

【C 函数 2】

int biSearch_rec(int r[],int low,int high,int key)

//r[low..high]中元素按非递减顺序排列

//用二分查找法在数组r中查找与key相同元素

//若找到则返回该元素在数组r下标,否则返回-1

{

int mid;

if((4)) {

mid = (low+high)/2 ;

if (key ==r[mid])

return mid;

else if (key<r[mid])

return biSearch_rec((5),key);

else

return biSearch_rec((6),key);

}/*if*/

return -1;

}/*biSearch_rec*/ 问题:4.1 (12分)

请填充C函数1和C函数2中空缺,将解答填入答题纸对应栏内。 问题:4.2 (3分)

若有序数组中有n个元素,采用二分查找法查找一个元素时,最多与( )个数组元素进行比较,即可确定查找结果。

(7)备选答案:

A.[log2(n+1)] B.[n/2] C.n-1 D.n

正确答案及解析

正确答案
解析

low<=high

(2)high=mid-1

(3)low=mid+1

(4)low<=high

(5)low,mid-1

(6)mid+1,high

(7)A

【解析】

本题考察折半查找。二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁有序列表。首先,假设表中元素是按升序排列,将表中间位置记录关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件记录,使查找成功,或直到子表不存在为止,此时查找不成功。

二分查找基本思想是将n个元素分成大致相等两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a左半部分继续搜索x,如果x>a[n/2],则只要在数组a右半部搜索x。

总共有n个元素,渐渐跟下去就是n,n/2,n/4,....n/2^k(接下来操作元素剩余个数),其中k就是循环次数。

你可能感兴趣的试题

单选题

设16位浮点数,其中阶符1位、阶码值6位、数符1位、尾数8位。若阶码用移码表示,尾数用补码表示,则该浮点数所能表示的数值范围是( )。

中级嵌入式系统设计师,章节练习,软件水平考试《中级嵌入式系统设计师》

  • A.见图A
  • B.见图B
  • C.见图C
  • D.见图D
查看答案
单选题

平均故障间隔时间MTBF用以表示系统平均无故障可正常运行的时间,下列与MTBF有关的叙述不正确的是______。

中级嵌入式系统设计师,章节练习,软件水平考试《中级嵌入式系统设计师》

  • A.见图A
  • B.见图B
  • C.见图C
  • D.见图D
查看答案
问答题

初级网络管理员,专项练习,软件水平考试《网络管理员》模拟题

初级网络管理员,专项练习,软件水平考试《网络管理员》模拟题

查看答案
单选题

中级软件设计师,模拟试题,2022年软件水平考试《中级软件设计师》模拟题

  • A.A
  • B.B
  • C.C
  • D.D
查看答案
单选题

中级软件设计师,模拟试题,2022年软件水平考试《中级软件设计师》模拟题

  • A.R
  • B.S
  • C.RS
  • D.R,S
查看答案

相关题库更多 +