首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明、C函数和问题,回答问题,将解答填入对应栏内。 【说明】 当数组中的元素已经排列有序时,可以采用折半查找(二分查找)法查找一个元素。 下面的函数biSearch(int r[],int low,int high,int key)用非递归方式在数
阅读以下说明、C函数和问题,回答问题,将解答填入对应栏内。 【说明】 当数组中的元素已经排列有序时,可以采用折半查找(二分查找)法查找一个元素。 下面的函数biSearch(int r[],int low,int high,int key)用非递归方式在数
admin
2018-11-21
34
问题
阅读以下说明、C函数和问题,回答问题,将解答填入对应栏内。
【说明】
当数组中的元素已经排列有序时,可以采用折半查找(二分查找)法查找一个元素。
下面的函数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*/
若有序数组中有n个元素,采用二分查找法查找一个元素时,最多与
(7)
个数组元素进行比较,即可确定查找结果。
(7)备选答案:
A.[log
2
(n+1)] B.[n/2] C.n一1 D. n
选项
答案
(7)A或[log
2
(n+1)]
解析
本题考查C程序的基本结构、递归运算逻辑和二分查找算法的实现。
二分查找算法要求查找表的元素已经有序,且可以随机访问元素,其基本思想是:首先令待查元素与中间位置上的元素进行比较,若相等,则查找成功结束;若大于中间元素,则继续在后半个查找表中继续进行二分查找,否则在前半个查找表中继续进行二分查找。
由于有序序列存储在数组中,所以查找表的开始位置(即最小元素的位置)用low表示,结束位置(即最大元素的位置)用high表示(即查找表可以通过[low,high]来表示),从而可以计算出中间位置mid为(low+high)/2,前半个查找表可用[low,mid一1]表示,后半个查找表可用[mod一1,high]表示。因此,在查找过程中,若待查元素小于中间位置的元素,则将high更新为mid-1;若待查元素大于中间位置的元素,则将low更新为mid+1,从而在继续进行二分查找时仍然通过[low,high]来表示查找表。显然,low<=high表示查找范围有效,即查找表至少有一个元素。
函数1中的空(1)处应填入“low<=high”,空(2)处表示要在前半个查找表中继续查找,因此需要修改表尾的位置参数,应填入“high=mid—1”;空(3)处表示要在后半个查找表中继续查找,因此需要修改表头的位置参数,应填入“low=mid+1”。
用递归方式实现二分查找算法时,表头位置参数或表尾位置参数的修改通过递归调用时的实参来表示。函数2中的空(4)处应填入“low<high”,表示查找表有效,空(5)处表示要在前半个查找表中继续查找,因此需要修改查找表的表尾位置参数,完整的递归调用为“biSearch_rec(r,low,mid—1,key)”;空(3)处表示要在后半个查找表中继续查找,因此需要修改查找表的表头位置参数,完整的递归调用为“biSearch_rec(r,mid+1,high,key)”。
二分查找算法的时间复杂度为O(log
2
n),最多与[log
2
(n+1)]个数组元素进行比较,即可确定查找结果。
转载请注明原文地址:https://jikaoti.com/ti/X8W7FFFM
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
评价信息系统时需要听取各有关方面的意见。在听取系统操作人员的意见时,主要讨论信息系统的______。
删除Windows中某个应用程序的快捷方式,意味着(39)。
以下关于操作系统中回收站的叙述,不正确的是____________。
编译程序的作用是将高级程序语言源程序翻译为(4)。
以下定性的分类变量中,(9)属于有序变量(能排序)。
资源记录文件位于/var/named目录下。这个目录是在以上的(1)文件中定义的。从备选选项中选择(6)~(10)处的解答。在问题4的named.abc.net文件中,出现了5种类型的记录。其中SOA是(6),NS是(7),MX是(8),A是
为什么一般处理“震荡波”病毒时,首先要把被侵入的计算机系统从网络上断开?为了解决“震荡波”病毒利用windows的缓冲区溢出漏洞攻击计算机系统问题,我们采用某防火墙建立一个“关闭445端口”的规则。请给出下列规则配置参数(防火墙规则配置界面如下图所示)
阅读以下说明,回答问题1至问题5。【说明】某一个网络地址块192.168.75.0中有5台主机A、B、C、D和E,它们的IP地址及子网掩码如表2-1所示。
框架在网页布局中主要起什么作用?主页中定义了几个框架,分别显示哪个文档?网页中使用的数据库连接引擎是什么?连接的后台数据库文件名是什么?
从以下备选答案中为程序中(1)~(5)处空缺内容选择正确答案,填入答题纸对应的解答栏内。(1)A.CreatObject()B.connect0C.go()D.open()(2)A."select*fromdata"B."select
随机试题
2007年1月1日正式成为欧盟国家联合体的国家是( )
将农业废弃物秸秆先通过糖化过程变为饲料,然后用牲畜排泄物及秸秆残渣培养食用菌,生产食用菌的残余废料又可以用来养蚯蚓,最终才把残余物返回农田,这是生态农业中物质、能量()利用系统类型。
下列做法不正确的是:()
下列建筑物中,不属于构筑物的是()。
“远洋牌”烤鱿鱼丝,用新鲜的鱿鱼配以白砂糖、盐、味精后烤制而成,125克/袋
下列各项中,能够据以判断非货币资产交换具有商业实质的有()。
经常听到这样的议论:社会转型时期,旧的道德规范已经不能适应社会发展的需要,而新的道德规范体系还没有建立起来,因此就难免存在道德紊乱的现象。这种议论似乎是在说,今天一些不符合道德标准的行为的出现是因为道德标准过时了。这其实是站不住脚的。因为自古及今,道德的一
TheRomanlanguageservedasthefirstmodelforansweringthequestion.EventosomeonewithnoknowledgeofLatin,thesimilar
if语句的语法格式可描述为:格式1:if(<条件>)<语句>或格式2:if(<条件>)<语句1>else<语句2>关于上面的语法格式,下列表述中错误的是()。
在C++中,编译系统自动为一个类生成默认构造函数的条件是
最新回复
(
0
)