3.5 查找

对关键码序列(9,12,15,20,24,29,56,69,87)进行二分查找(折半查找),若要查找关键码15;则需依次与( )进行比较。
A. 87、29、15
B. 9、12、15
C. 24、 12、15
D. 24、20、15

正确答案是 C。
解析
二分法查找(折半查找)的基本思想是:(设R[low,……,high]是当前的查找区)
(1)确定该区间的中点位置:mid=[(low+high)/2];
(2)将待查的k值与R[mid].key比较,若相等,则查找成功并返回此位置,否则需确定新的查找区间,继续二分查找,具体方法如下。
若R[mid].key>k,则由表的有序性可知
R[mid,.……,n].key均大于k,因此若表中存在关键字等于k的结点,则该结点必定是在位置mid左边的子表R[low,…,mid-1]中。因此,新的查找区间是左子表R[low,…,high],其中high=mid-1。
若R[mid].key<k,则要查找的k必在mid的右子表R[mid+1,……,high]中,即新的查找区间是右子表R[low,…,high],其中low=mid+1。
若R[mid].key=k,则查找成功,算法结束。
(3)下一次查找是针对新的查找区间进行,重复步骤(1)和(2)。
(4)在查找过程中,low逐步增加,而high逐步减少。如果high<low,则查找失败,算法结束。

单选题
若线性表采用链式存储结构,则适用的查找方法为( )。
A. 随机查找
B. 散列查找
C. 二分查找
D. 顺序查找

正确答案是 D。
解析
链式存储结构无法随机查找元素。
以散列方式存储和查找元素时,元素的存储位置与其关键字相关。
二分查找只能在有序顺序表中进行。

二叉排序树中进行查找的效率与( )有关。
A. 二叉排序树的深度
B. 二叉排序树的结点个数
C. 被查找结点的度
D. 二叉排序树的存储结构

正确答案是 A。
解析
二叉排序树的查找路径是自顶向下的,平均查找长度取决于树的高度。

对某有序表进行二分查找时,进行比较的关键字序列不可能是( )。
A. 42,61,90,85,77
B. 42,90.85,61,77
C. 90,85,61,77,42
D. 90,85,77,61.42

正确答案是 C。
解析
二分查找的前提是元素有序(一般是升序),基本思想是拿中间元素。A[m]与要查找的元素x进行比较,如果相等,则已经找到,如果A[m]比x大,那么要找的元素一定在A[m]前边(左边),如果A[m]比x小,那么要找的元素一定在A[m]后边(右边)。每进行一次查找,数组规模减半。反复将子数组规模减半,直到发现要查找的元素,或者当前子数组为空。选项C错在如果一个元素比61大,下一次可以跟77比较,但是77后面的元素是42,说明要查找的元素比77小,因此再次比较确实是跟42比,而题干已经表明这个元素大于61了,明显不合理。因此答案选C。

在55个互异元素构成的有序表A[1…55]中进行折半查找(或二分查找,向下取整)。若需要找的元素等于A[19],则在查找过程中参与比较的元素依次为( )、A[19]。
A. A[28]、A[30]、A[15]、A[20]
B. A[28]、A[14]、A[21]、A[17]
C. A[28]、A[15]、 A[22]、A[18]
D. A[28]、 A[18]、 A[22]、 A[20]

正确答案是 B。
解析
折半查找时,下标计算过程为(注:key的值与A[19]相同):
1、mid=[(1+55)/2]=28,把A[28]与key的值比较后,缩小查找范围为:A[1]至A[27];
2、mid=[(1+27)/2]=14,把A[14]与key的值比较后,缩小查找范围为:A[15]至A[27];
3、mid=[(15+27)/2]=21,把A[21]与key的值比较后,缩小查找范围为:A[15]至A[20];
4、mid=[(15+20)/2]=17,把A[17]与key的值比较后,缩小查找范围为:A[18]至A[20];
5、mid=[(18+20)/2]=19,把A[19]与key的值比较后,发现值相等,找到目标。

对某有序顺序表进行折半查找时,( )不可能构成查找过程中关键字的比较序列。
A. 45,10,30,18,25
B. 45,30,18,25,10
C. 10,45,18,30,25
D. 10,18,25,30,45

正确答案是 B。
解析
本题考查数据结构基础知识。
进行折半查找时,首先与表中间位置上的元素进行比较,若待查找的元素大于中间元素,则接下来在后半区(是比中间元素更大者组成的有序子表)进行折半查找,否则在前半区(是比中间元素更小者组成的有序子表)进行折半查找。二分查找过程可用二分查找判定树来描述,即大于中间元素时走右分支,小于中间元素时走左分支,等于时查找成功结束。
四个选项的比较序列在二分查找判定树上的查找路径表示为:
显然,选项B是不可能的查找路径。

实现二分查找(折半查找)时,要求查找表( )。
A. 顺序存储,关键码无序排列
B. 顺序存储,关键码有序排列
C. 双向链表存储,关键码无序排列
D. 双向链表存储,关键码有序排列

正确答案是 B。
解析
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
二分查找算法要求:①必须采用顺序存储结构;②必须按关键字大小有序排列。

折半查找在有序数组A中查找特定的记录K:通过比较K和数组中的中间元素A[mid]进行,如果相等,则算法结束;如果K小于A[mid],则对数组的前半部分进行折半查找;否则对数组的后半部分进行折半查找。根据上述描述,折半查找算法采用了(1)算法设计策略。对有序数组(3,14,27,39,42,55,70,85,93,98),成功查找和失败查找所需要的平均比较次数分别是(2)(假设查找每个元素的概率是相同的)
题目(1)
A. 分治
B. 动态规划
C. 贪心
D. 回溯
题目(2)
A. 29/10和29/11
B. 30/10和30/11
C. 29/10和39/11
D. 30/10和40/11

正确答案是 A C。
解析
折半查找成功的过程,可以理解为对这10个元素分别查找成功。
对各个元素进行编号依次为1、2、3、……、10,此时:
(1)1次查找成功的元素是(1+10)/2=5号元素,也就是42;
(2)2次查找成功的元素可能是(1+4)/2=2或者(6+10)/2=8,也就是2号位置14,或者8号位置85;
(3)3次查找成功的元素可能是1号元素、3号元素27、6号元素55或者9号元素93;
(4)4次查找成功的元素可能是4号元素39、7号元素77或者10号元素98。
此时平均查找次数为(1+22+43+34)/10=29/10。
折半查找失败的过程,可以理解为对处于这10个元素之前的间隔位置的数进行了查找,对各个元素间隔进行编号依次为1、2、3、………、11,此时:
(1)1号间隔位于3的左侧,此时需要分别与元素42、14、3比较后才会查找失败,比较次数为3;
(2)2号位置位于3和14之间,此时需要分别与元素42、14、3比较后才会查找失败,比较次数为3;
(3)3号位置位于14和27之间,此时需要分别与元素42、14、27比较后才会查找失败,比较次数为3;
(4)4号位置位于27和39之间,此时需要分别与元素42、14、27、39比较后才会查找失败,比较次数为4;
(5)5号位置位于39和42之间,此时需要分别与元素42、14、27、39比较后才会查找失败,比较次数为4;
(6)6号位置位于42和55之间,此时需要分别与元素42、85、55比较后才会查找失败,比较次数为3;
(7)7号位置位于55和77之间,此时需要分别与元素42、85、55、77比较后才会查找失败,比较次数为4;
(8)8号位置位于77和85之间,此时需要分别与元素42、85、55、77比较后才会查找失败,比较次数为4;
(9)9号位置位于85和93之间,此时需要分别与元素42、85、93比较后才会查找失败,比较次数为3;
(10)10号位置位于93和98之间,此时需要分别与元素42、85、93、98比较后才会查找失败,比较次数为4;
(11)11号位置位于98右侧,此时需要分别与元素42、85、93、98比较后才会查找失败,比较次数为4;
此时平均查找次数为(3
5+4*6)/11=39/11。
把成功查找出所有元素的比较次数加起来是29,然后除10,就是29/10。
找出11个中间数,进行失败查询。先把总的比较次数加起来是39,然后除11,就是39/11。

设散列表长m=14,散列函数为H(key)=key%11,表中仅有4个结点H(15)=4,H(38)=5,H(61)=6,H(84)=7,若使用线性探测法处理冲突,则关键字49存储的地址是( )。
A. 3
B. 5
C. 8
D. 9

正确答案是 C。
解析
49%11=5,发生冲突
线性探测6,发生冲突
线性探测7,发生冲突
线性探测8,无冲突

单选题
在有11个元素的有序表A[1,2,3…11]中进行折半查找,向下取整,查找元素A时[11],被比较的元素下标依次是( )。
A. 6,8,10,11
B. 6,9,10,11
C. 6,7,9,11
D. 6,8,9,11

正确答案是 B。
解析
根据折半查找思想,第一次mid=(1+11)/2=6,第二次mid=(7+11)/2=9,第三次mid=(10+11)/2=10,第四次mid=11。

用哈希表存储元素时,需要进行冲突(碰撞)处理,冲突是指( )。
A. 关键字被依次映射到地址编号连续的存储位置
B. 关键字不同的元素被映射到相同的存储位置
C. 关键字相同的元素被映射到不同的存储位置
D. 关键字被映射到哈希表之外的位置

正确答案是 B。
解析
本题考查数据结构相关基础知识。哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表称为哈希表。其基本思想:首先在元素的关键字K和元素的位置P之间建立一个对应关系f,使得P=f(K),其中f称为哈希函数。创建哈希表时,把关键字K的元素直接存入地址为f(K)的单元;查找关键字K的元素时利用哈希函数计算出该元素的存储位置P=f(K);当关键字集合很大时,关键字值不同的元素可能会映射到哈希表的同一地址上,即K1≠K2,但f(K1)=f(K2),这种现象称为hash冲突,实际冲突是不可避免的,只能通过改进哈希函数的性能来减少冲突。

在12个互异元素构成的有序数组a[1…12]中进行二分查找(即折半查找,向下取整),若待查找的元素正好等于a[9],则在此过程中,依次与数组中的( )比较后,查找成功结束。
A. a[6]、 a[7]、 a[8]、 a[9]
B. a[6]、a[9]
C. a[6]、a[7]、a[9]
D. a[6]、a[8]、a[9]

正确答案是 B。
解析
二分查找法的原则是:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

在13个元素构成的有序表A[1…13]中进行折半查找(或称为二分查找,向下取整)。那么以下叙述中,错误的是( )。
A. 无论要查找哪个元素,都是先与A[7]进行比较
B. 若要查找的元素等于A[9],则分别需与A[7]、A[11]、A[9]进行比较
C. 无论要查找的元素是否在A[]中,最多与表中的4个元素比较即可
D. 若待查找的元素不在A[]中,最少需要与表中的3个元素进行比较

正确答案是 B。
解析
考察数据结构折半查找算法,B选项错误之处在于,要查找a[9]元素,第一次比较的是A[7](下标计算方法为:[1+13]/2=7),第2次比较的是A[10](下标计算方法为:[8+13]/2=10)。

对n个元素的有序表A[i···n]进行顺序查找,其成功查找的平均查找长度(即在查找表中找到指定关键码的元素时,所进行比较的表中元素个数的期望值)为( )。
A. n
B. (n+1)/2
C. log2n
D. n2

正确答案是 B。
解析
本题考查顺序查找方法。
假设从前往后找,则所找元素为第1个元素时,与表中的1个元素作了比较,所找元素为第2个元素时,与表中的2个元素作了比较,.……,所找元素为第n个元素时,与表中的n个元素作了比较,因此,平均查找长度等于(1+2+…+n)/n。

以下关于散列表(哈希表),及其查找特点的叙述中,正确的是( )。
A. 在散列表中进行查找时,只需要与待查找关键字及其同义词进行比较
B. 只要散列表的装填因子不大于1/2,就能避免冲突
C. 用线性探测法解决冲突容易产生聚集问题
D. 用链地址法解决冲突可确保平均查找长度为1

正确答案是 C。
解析
A选项错误,考查的是散列表查找时对应位置填写的可能是关键字、也可能是同义词、也可能是非同义词。
在放置数据时,首次放置关键字本身或者同义词(计算结果一致的元素),但也有可能在前面的处理过程中因为冲突的原因,将某个非同义词放置到该位置了,在查找过程中,这3类都有可能出现在计算结果对应的位置,所以只需要与查找关键字及同义词比较的说法是错误的。
B选项错误,装填因子越大,表示装填的记录越满,发生冲突的可能性越大,反之发生冲突的可能性越小。并不会避免冲突发生。
C选项正确,线性探测法解决冲突空间利用率高,但容易发生聚集现象。
D选项错误,链地址解决冲突时,可能会出现多个同义词放在同一个链表,平均查找长度无法确保为1。
因此本题正确答案为C选项。

对长度为n的有序顺序进行折半查找(即二分查找)的过程可用一棵判定树表示,该判定树的形态符合( )的特点。
A. 最优二叉树(即哈夫曼树)
B. 平衡二叉树
C. 完全二叉树
D. 最小生成树

正确答案是 B。
解析
本题考查的是二分查找相关内容。
二分查找是将序列均分,每一次都是平均分配后左右序列数相同,相当于一棵二叉树,左右结点都是相同个数,最终形成的是平衡二叉树的形态。本题选择B选项。

在线性表L中进行二分查找,要求L( )。
A. 顺序存储,元素随机排列
B. 双向链表存储,元素随机排列
C. 顺序存储,元素有序排列
D. 双向链表存储,元素有序排列

正确答案是 C。
解析
本题考查二分查找相关知识。
二分查找的前提条件是顺序存储,且有序排列。本题选择C选项。

对于有序表(8,15,19,23,26,31,40,65,91),用二分法进行查找时,可能的关键字比较顺序为( )。
A. 26,23,19
B. 26,8,19
C. 26,40,65
D. 26,31,40

正确答案是 C。
解析
本题考查数据结构-二分法知识。
将有序表放入数组如下:
根据二分法的查找过程:
(1)第一轮比较对象(0+8)/2=4,即与序号为4的关键字26进行比较;
(2)第二轮如果选择左侧较小列,则下一个比较对象应该为(0+3)/2=1(向下取整),即与序号为1的关键字15比较,没有对应的选项;
(3)第二轮如果选择右侧较大列,则下一个比较对象应该为(5+8)/2=6(向下取整),即与序号为6的关键字40进行比较。
所以应该选择C选项。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1 目标检测的定义 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。 目标检测任务可分为两个关键的子任务,目标定位和目标分类。首先检测图像中目标的位置(目标定位),然后给出每个目标的具体类别(目标分类)。输出结果是一个边界框(称为Bounding-box,一般形式为(x1,y1,x2,y2),表示框的左上角坐标和右下角坐标),一个置信度分数(Confidence Score),表示边界框中是否包含检测对象的概率和各个类别的概率(首先得到类别概率,经过Softmax可得到类别标签)。 1.1 Two stage方法 目前主流的基于深度学习的目标检测算法主要分为两类:Two stage和One stage。Two stage方法将目标检测过程分为两个阶段。第一个阶段是 Region Proposal 生成阶段,主要用于生成潜在的目标候选框(Bounding-box proposals)。这个阶段通常使用卷积神经网络(CNN)从输入图像中提取特征,然后通过一些技巧(如选择性搜索)来生成候选框。第二个阶段是分类和位置精修阶段,将第一个阶段生成的候选框输入到另一个 CNN 中进行分类,并根据分类结果对候选框的位置进行微调。Two stage 方法的优点是准确度较高,缺点是速度相对较慢。 常见Tow stage目标检测算法有:R-CNN系列、SPPNet等。 1.2 One stage方法 One stage方法直接利用模型提取特征值,并利用这些特征值进行目标的分类和定位,不需要生成Region Proposal。这种方法的优点是速度快,因为省略了Region Proposal生成的过程。One stage方法的缺点是准确度相对较低,因为它没有对潜在的目标进行预先筛选。 常见的One stage目标检测算法有:YOLO系列、SSD系列和RetinaNet等。 2 常见名词解释 2.1 NMS(Non-Maximum Suppression) 目标检测模型一般会给出目标的多个预测边界框,对成百上千的预测边界框都进行调整肯定是不可行的,需要对这些结果先进行一个大体的挑选。NMS称为非极大值抑制,作用是从众多预测边界框中挑选出最具代表性的结果,这样可以加快算法效率,其主要流程如下: 设定一个置信度分数阈值,将置信度分数小于阈值的直接过滤掉 将剩下框的置信度分数从大到小排序,选中值最大的框 遍历其余的框,如果和当前框的重叠面积(IOU)大于设定的阈值(一般为0.7),就将框删除(超过设定阈值,认为两个框的里面的物体属于同一个类别) 从未处理的框中继续选一个置信度分数最大的,重复上述过程,直至所有框处理完毕 2.2 IoU(Intersection over Union) 定义了两个边界框的重叠度,当预测边界框和真实边界框差异很小时,或重叠度很大时,表示模型产生的预测边界框很准确。边界框A、B的IOU计算公式为: 2.3 mAP(mean Average Precision) mAP即均值平均精度,是评估目标检测模型效果的最重要指标,这个值介于0到1之间,且越大越好。mAP是AP(Average Precision)的平均值,那么首先需要了解AP的概念。想要了解AP的概念,还要首先了解目标检测中Precision和Recall的概念。 首先我们设置置信度阈值(Confidence Threshold)和IoU阈值(一般设置为0.5,也会衡量0.75以及0.9的mAP值): 当一个预测边界框被认为是True Positive(TP)时,需要同时满足下面三个条件: Confidence Score > Confidence Threshold 预测类别匹配真实值(Ground truth)的类别 预测边界框的IoU大于设定的IoU阈值 不满足条件2或条件3,则认为是False Positive(FP)。当对应同一个真值有多个预测结果时,只有最高置信度分数的预测结果被认为是True Positive,其余被认为是False Positive。 Precision和Recall的概念如下图所示: Precision表示TP与预测边界框数量的比值 Recall表示TP与真实边界框数量的比值 改变不同的置信度阈值,可以获得多组Precision和Recall,Recall放X轴,Precision放Y轴,可以画出一个Precision-Recall曲线,简称P-R
1 目标检测的定义 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。 目标检测任务可分为两个关键的子任务,目标定位和目标分类。首先检测图像中目标的位置(目标定位),然后给出每个目标的具体类别(目标分类)。输出结果是一个边界框(称为Bounding-box,一般形式为(x1,y1,x2,y2),表示框的左上角坐标和右下角坐标),一个置信度分数(Confidence Score),表示边界框中是否包含检测对象的概率和各个类别的概率(首先得到类别概率,经过Softmax可得到类别标签)。 1.1 Two stage方法 目前主流的基于深度学习的目标检测算法主要分为两类:Two stage和One stage。Two stage方法将目标检测过程分为两个阶段。第一个阶段是 Region Proposal 生成阶段,主要用于生成潜在的目标候选框(Bounding-box proposals)。这个阶段通常使用卷积神经网络(CNN)从输入图像中提取特征,然后通过一些技巧(如选择性搜索)来生成候选框。第二个阶段是分类和位置精修阶段,将第一个阶段生成的候选框输入到另一个 CNN 中进行分类,并根据分类结果对候选框的位置进行微调。Two stage 方法的优点是准确度较高,缺点是速度相对较慢。 常见Tow stage目标检测算法有:R-CNN系列、SPPNet等。 1.2 One stage方法 One stage方法直接利用模型提取特征值,并利用这些特征值进行目标的分类和定位,不需要生成Region Proposal。这种方法的优点是速度快,因为省略了Region Proposal生成的过程。One stage方法的缺点是准确度相对较低,因为它没有对潜在的目标进行预先筛选。 常见的One stage目标检测算法有:YOLO系列、SSD系列和RetinaNet等。 2 常见名词解释 2.1 NMS(Non-Maximum Suppression) 目标检测模型一般会给出目标的多个预测边界框,对成百上千的预测边界框都进行调整肯定是不可行的,需要对这些结果先进行一个大体的挑选。NMS称为非极大值抑制,作用是从众多预测边界框中挑选出最具代表性的结果,这样可以加快算法效率,其主要流程如下: 设定一个置信度分数阈值,将置信度分数小于阈值的直接过滤掉 将剩下框的置信度分数从大到小排序,选中值最大的框 遍历其余的框,如果和当前框的重叠面积(IOU)大于设定的阈值(一般为0.7),就将框删除(超过设定阈值,认为两个框的里面的物体属于同一个类别) 从未处理的框中继续选一个置信度分数最大的,重复上述过程,直至所有框处理完毕 2.2 IoU(Intersection over Union) 定义了两个边界框的重叠度,当预测边界框和真实边界框差异很小时,或重叠度很大时,表示模型产生的预测边界框很准确。边界框A、B的IOU计算公式为: 2.3 mAP(mean Average Precision) mAP即均值平均精度,是评估目标检测模型效果的最重要指标,这个值介于0到1之间,且越大越好。mAP是AP(Average Precision)的平均值,那么首先需要了解AP的概念。想要了解AP的概念,还要首先了解目标检测中Precision和Recall的概念。 首先我们设置置信度阈值(Confidence Threshold)和IoU阈值(一般设置为0.5,也会衡量0.75以及0.9的mAP值): 当一个预测边界框被认为是True Positive(TP)时,需要同时满足下面三个条件: Confidence Score > Confidence Threshold 预测类别匹配真实值(Ground truth)的类别 预测边界框的IoU大于设定的IoU阈值 不满足条件2或条件3,则认为是False Positive(FP)。当对应同一个真值有多个预测结果时,只有最高置信度分数的预测结果被认为是True Positive,其余被认为是False Positive。 Precision和Recall的概念如下图所示: Precision表示TP与预测边界框数量的比值 Recall表示TP与真实边界框数量的比值 改变不同的置信度阈值,可以获得多组Precision和Recall,Recall放X轴,Precision放Y轴,可以画出一个Precision-Recall曲线,简称P-R
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yoyo勰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值