2024年2月3日发(作者:宝马m6新款2021报价)
教科版(2019)选择性必修1《第三单元数据的排序与查找》
2022年单元测试卷1.
以下程序是利用二分查找列表中数字14,程序运行结果是( )A.
查了3次B.
查了4次C.
查了5次D.
查了6次;2.
小华玩猜价格游戏,已知价格的范围在1元到200元之间。他第一次猜100元,太低第2次猜150元,太高;第三次猜125元,又太低;……,小明在猜价格时采用的方法是( )A.
顺序查找B.
随机查找C.
对分查找D.
排序查找3.
现有三个整数序列:“1,2,3,4,5”“7,1,6,8,3”“9,8,7,6,5”。用选择排序算法分别对三个序列进行升序排序,比较次数依次为x、y、z,则下列关系正确的是( )A.
x=y=zB.
x>y>zC.
y>z>xD.
z>y>x第1页,共31页
4.
某对分查找算法的VB程序段如下:按非降序排序的整型数组a(1)到a(10)的值依次为“11,23,31,39,44,52,60,x,69,89”。在文本框Textl中输入66,执行该程序段后s值为“RRL”,则x的可能值的个数为( )A.
3B.
4C.
5D.
65.
某对分查找算法的VB程序段如下:数组元素a(1)到a(20)各不相同且按降序排列,若执行该程序段后n的值为4,则Key的值不可能为( )A.
a(3)B.
a(8)C.
a(11)D.
a(17)6.
二分查找又称折半查找,是一种应用于有序数列的高效查找算法。下列数列中适合二分查找算法的是( )A.
85 78 59 53 19 18C.
11 99 4 25 3 39B.
67 62 68 4 1 17D.
43 71 78 81 6 55第2页,共31页
7.
有如下VB程序段:Dim i As Integer,j As Interger,cnt As IntegerDim a(1 to 10)As IntegerKey=Val()cnt=0:i=1:j=10Do While i<=jcnt=cnt+im=Int(Rnd( )*(j-i+1))+iIfa(m)>Key Then j=m-1 Else i=m+1Loop数组a(1)至a(10)的数据依次为:1、2、2、3、3、4、5、7、8、9。若查找键key等于2,执行该程序段后,下列说法正确的是( )A.
cnt的值一定为4的值一定为4B.
m的值一定为3C.
j的值可能为2D.
i8.
某对分查找算法的 VB
程序段如下:i=1:j=6:n=0:f=False key=Val(Text1.Text)Do While i<=j and Not fn=n+1m=fix((i+j)/2)If key=a(m) then f=TrueIf key<a(m) then j=m-1Else i=m+1Loop数组元素 a(1)到 a(6)的值依次为“3,9,21,33,47,59”。文本框 Text1
中输入“33”后运行该程序,则以上程序段运行结束后,下列说法不正确的是( )A.
变量 i
的值为 4B.
变量 j
的值为5C.
变量 m
的值为 4多需要猜多少次?( )D.
变量 n
的值为 39.
一物品的价格在 100?500
元整数之间,如果采用二分法策略猜此物品的价格,、至A.
8B.
9C.
10D.
1110.
关于8个圆盘的汉诺塔问题,要求将塔座A上的所有圆盘借助塔座B移到塔座C上,并仍按同样顺序叠放。移动圆盘时,需遵守汉诺塔问题的移动规则。由此设计出了下列解决汉诺塔问题的递归算法,能按要求正确解决此问题的选项是( )第3页,共31页
A.
B.
C.
D.
11.
某对分查找的 VB
程序如下:数组元素a(1)到a(8)的值依次为“35,32,29,26,21,19,16,12”。在文本框Text1中输入17,执行该程序段后,标签Label1上显示的内容是( )A.
3 7B.
2 7C.
4 8第4页,共31页D.
2 8
12.
有如下VB程序段:执行程序后,数组a各元素可能是( )A.
7,6,5,4,3,2C.
11,8,9,6,7,4,5B.
6,7,4,5,2,3D.
2,5,6,9,8,1113.
某对分查找算法的VB程序段如下:数组a(1)至a(7)分别是“123“,“25“,“35“,“477“,“66“,“8“,“82“,当在Text1中输入5时,运行这段程序后,下面说法错误的是( )A.
i<j执行4次B.
j的值是5C.
i的值是6D.
m的值是514.
有如下VB程序段:执行该程序段后,a数组各元素可能是( )第5页,共31页
A.
77,29,54,13,69,98C.
19,34,56,67,85,9815.
某算法程序如下:B.
31,46,52,68,70,88D.
40,55,56,77,86,99已知数组元素d(0)到d(9)的值依次是1、4、7、12、12、14、14、18、19、20,则该程序段执行后,Labell上显示的内容不可能是( )A.
-1B.
0C.
1D.
-316.
有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当折半查找值为82的结点时,( )次比较后查找成功。A.
8B.
4C.
2D.
117.
某对分查找的程序段如下:程序执行后,下列说法正确的是( )第6页,共31页
A.
i的值可能小于等于jB.
n的值一定是3C.
m的值可能4D.
可能出现L的值是1,R的值为3的情况18.
有如下VB程序段:s=““t=Int(Rnd*26)For i=1To4If i Mod2=1 ThenElses=s+Chr(t+26-i) Mod26+65)End IfNext i执行该程序段后,s的内容不可能是( )A.
TQVOB.
MJOHC.
CZEYD.
YVAT19.
有如下VB程序段:数组a(1)~a(10)分别是“2 3 4 4 4 6 6 8 10 12”,程序运行后,t值可能是( )A.
0B.
2C.
6D.
18第7页,共31页
20.
某冒泡排序算法的VB程序段如下:执行该程序段后,cnt的值为3,数组元素实现有序,则划线处的代码是( )A.
2 To i-1B.
2 To iC.
6 To 7-i Step-1D.
6 To 8-i Step-121.
有如下VB程序段:数组元素a(1)到a(8)存放着非升序排列的数字,执行上述程序段后,下列说法错误的是( )A.
i=j+1一定成立C.
a(i+1)可能等于key升序排列。B.
i可能等于9D.
a(j-1)可能等于key22.
下列VB程序段功能为:通过冒泡排序,最终数组元素a(x)到a(y)内的数实现上述程序段中横线处可选语句为:第8页,共31页
①(1)1 To y–x(2)x To y–i②(1)x to y-1(2)y-1 to x+i-1 step-1③(1)1 To y–x(2)x to y+x–i–1④(1)x to y-1(2)y-1 to i step-1则(1)(2)处依次填入的语句组合正确的有( )A.
①②③④B.
①③C.
②③④D.
①④23.
有如下两段VB程序:关于这两段程序的说法有:①程序段1一定可以实现对数组a中n个元素的升序排序②程序段2一定可以实现对数组a中n个元素的升序排序③程序段1中cnt最大值可能为n(n-1)/2④程序段2中cnt最大值可能为n-1以上说法正确的有( )A.
①②③④B.
①②③C.
①③④D.
②③④第9页,共31页
24.
采用二分查找方法,在1-100中查找53需要比较( )次。A.
5B.
6C.
7D.
825.
有如下VB程序段:数组f各元素的初值为False,执行该程序段后,标签Label1上显示的内容可能是( )A.
PPOMB.
MRORC.
PROMD.
RPAM26.
有如下VB程序段:数组元素a(1)~a(8)的值依次是“15,2,1,17,19,14,25,26”,执行该程序段后,文本框Text1中显示的是( )A.
4B.
5C.
6D.
7第10页,共31页
27.
有如下VB程序段:数组元素f(1)到f(6)初始为0,执行该程序段后,其值依次是( )A.
2,3,1,3,2,3C.
2,3,1,3,3,2B.
3,2,3,1,2,3D.
3,2,1,3,2,328.
某对分查找算法的VB程序段如下:执行该程序段后,变量n的值可能是( )A.
1B.
2C.
3D.
429.
采用冒泡排序算法对数据序列“18,13,15,2,1,20”进行排序,第一轮排序后的结果为“1,18,13,15,2,20”,则完成整个序列的排序交换的次数是( )A.
6B.
7C.
8D.
9第11页,共31页
30.
某对分查找算法的VB程序如下:若数组d(1)至d(10)的值依次为“11,13,20,48,51,67,70,73,80,91“,若执行后Label1上显示2个“L”和1个“R”或2个“R”和1个“L”,则key的可取值个数为( )A.
6B.
13C.
17D.
2231.
有如下对分查找程序段:程序运行后,下列说法不正确的是( )A.
若输入Key值为15,则Text2中显示1B.
若输入Key值为12,运行程序结束后,i-j=1C.
若输入Key值为7,运行程序结束后,m=1D.
Text2中显示的值可能为0第12页,共31页
32.
某对分查找的VB程序段如下:执行该程序段后,变量c的值不可能为( )A.
4B.
3C.
2D.
1;……。这种每次缩小一半查找范围而达33.
若提示还是高了,则第三次猜12,依次类推到迅速确定目标的算法称为( )A.
排序法B.
顺序查找法C.
解析法D.
二分查找法34.
迭代法也称______,是用计算机解决问题的一种基本方法。迭代通常是为了接近并达到所需的目标或结果。每一次对过程的______称为一次“迭代”,而每一次迭代得到的______会被用来作为下一次迭代的______。( )A.
辗转法;重复;结果;初始值C.
辗转法;结果;重复;初始值B.
重复;结果;辗转法;初始值D.
结果;初始值;辗转法;重复35.
在字符串s中查找是否存在字符子串s1,若有则返回第一个s1的起始位置,若没有则返回-1,实现该功能的VB程序段如下:代码中划线部分由下列代码组成:第13页,共31页
①p=1
②s1=Mid(s,i,t)③ p=-1
④s1=Mid(s,i,1)⑤i=i+1
⑥i=i+t下列选项中,代码顺序正确的是( )A.
③②⑥B.
①④⑥C.
③②⑤D.
③④⑤36.
某同学将对分查找程序进行了改编,程序运行时,自动产生9个[10,99]之间的不重复随机数并降序排列,在文本框Text1中显示。在文本框Text2中输入查找键key,单击“查找”按钮Command1,将查找结果显示在文本框Text3中。程序运行界面如图所示。上述程序段中方框处可选语句为:①Key10>a(m)10②Key Mod 10<a(m) Mod 10③Key10<a(m)10第14页,共31页
④Key Mod 10>a(m) Mod 10则(1)(2)(3)(4)处语句依次为( )A.
①②③④B.
④②①③C.
①③④②D.
①②④③37.
某对分查找算法的VB程序段如下:数组元素a(1)到a(6)的值依次为“4,7,9,14,15,21”,执行该程序段后,标签Labell中显示的内容不可能的是( )A.
4B.
7C.
13D.
1538.
某冒泡排序算法的VB程序段如下:执行完上述程序段后,实现a数组元素有序排列,则划线处的代码可以是( )①n To n+2-i Step-i②n To i+1 Step-1③2 To i④2 To n-iA.
②③B.
②④C.
①④D.
①③39.
采用经典冒泡排序算法对数据序列“9,3,4,5,0”完成升序排序,则排序过程中数据“4”被比较的次数为( )A.
2次B.
3次C.
4次D.
5次第15页,共31页
40.
下列对分查找代码用于查找非升序序列中不小于key的下标最大值,部分代码如下:则划线处代码正确的是( )A.
①R=m-1
②LC.
①R=m
②LB.
①R=m-1
②L-1D.
①R=m
②L-1第16页,共31页
答案和解析1.【答案】B【解析】第一次查找mid=6,此时s(6)>x,执行right=mid-1=5;第二次查找mid=2,此时s(2)>x,执行right=mid-1=1;第三次查找mid=0,此时s(0)<x,执行left=mid+1=1;第四次查找mid=1,此时s(1)<x,执行right=mid-1=0;不在满足条件,循环停止故选:B。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握二分查找的定义及查找过程。2.【答案】C【解析】价格的范围在1元到200元之间。他第一次猜100元,太低;第2次猜150元,太高;第三次猜125元,又太低,每次猜的数字都是上一次的一半,所以这种方法叫做对分查找,也成二分查找或者折半查找故选:C。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。紧扣概念进行选择,难度不大。3.【答案】A【解析】根据选择排序思想可知,不管数据是否已经有序,部分有序或是无序,选择排序还是要把每个数据都比较过去,最后选择出一个最小的数据(题目为升序),若选择出的这个最小数据本身位置不在第一个位置则进行交换,然后再剩下的数据中继续找到第二个小的数同样,如果不是本身自己第二个位置的数,则交换,依次类推,其总的比较次数为n*(n-1)/2次,由于三组数列中均为五个元素,故x=y=z故选:A。本题考查的是VB算法中选择排序的相关知识。如果有N个元素需要排序,那么首先从N个元素第17页,共31页
中找到最小的那个元素与第0位置上的元素交换(说明一点,如果没有比原本在第0位置上的元素小的就不用交换了,后面的同样是),然后再从剩下的N-1个元素中找到最小的元素与第1位置上的元素交换,之后再从剩下的N-2个元素中找到最小的元素与第2位置上的元素交换,.......直到所有元素都排序好(也就是直到从剩下的2个元素中找到最小的元素与第N-2位置上的元素交换)。数列掌握选择排序的基本思想进行选择,难度不大。4.【答案】D【解析】x的取值范围应该为60--69,再考虑到要查找的key的值为66,执行该程序段后s的值为“RRL”,因此由此可以判断出查找的中值m的顺序分别为5,8,9,而x的位置是8,也就是说,以key=66为关键字进行第二次查找后继续右偏,这说明x的值肯定比66小(不可能等于66,若等于66则退出查找),因此可以将x的取值范围缩小为60--65之间的整数,即60、61、62、63、64、65这6个整数。故选:D。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及查找过程。5.【答案】B【解析】根据m=(i+j)2语句得到第一次查找为a(10),第二次为a(15)或者a(5),第三次为a(18)、a(12)或者a(2)、a(7),第四次为a(3),a(7、)a(9)、a(11)、a(17)a(19).
故选:B。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及查找过程。第18页,共31页
6.【答案】A【解析】适合二分查找的是一组升序或者降序排列的数组故选:A。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。了解二分查找的定义及查找原理。7.【答案】D【解析】根据对分查找的变式,由m=Int(Rnd( )*(j-I+1))+i可知,m取值在[I,j]之间,若查找键key=2,则cnt的值不一定为4,故选项A错误;m的值可能是3或者4;j的值一定为3;i的值一定为4,故选项D说法正确。
故选:D。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用
,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的
与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置
将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的
,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及查找过程。8.【答案】B【解析】分析程序运行过程如下:第一次查找:n=1,i=1,j=6,m=3,a(3)=21<33,则i=m+1=4;第二次查找:n=2,i=4,j=6,m=5,a(5)=47>33,则j=m-1=4;第三次查找:n=3,i=4,j=4,m=4,a(4)=33,查找结束,此时j的值为4.
故选:B。对分查找的基本思想:将查找键与有序数组内处于中间位置的元素进行比较,如果中间位置上的元素数值与查找键相同,表示找到,否则根据数组元素的有序性,就可确定应该在数组的前半部分还是后半部分继续进行查找。在新确定的范围内,继续按上述方法进行查找,直到获得最终结果。熟练掌握对分查找的定义及其查找过程。第19页,共31页
9.【答案】B【解析】该查找过程可用二叉树表示,每次可以查找左子树或右子树,以其中左子树为例,最差的情况是直到猜测到100为止,其中的一种查找过程如下,可以发现至多需要猜9次,故本题选B选项。
故选:B。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用
,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的
与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置
将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的
,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及查找过程。10.【答案】A【解析】首先将塔座A上的n-1个圆盘借助塔座B移到塔座C上,接着将塔座A上的第n个圆盘移到塔座B上,最后将塔座C上的n-1个圆盘借助塔座A移动到塔座B上。函数hanoi(n,A,C,B)表示将塔座A上的n个圆盘借助塔座C全部移到塔座B上,对应递归算法为选项A,故本题选A选项。
故选:A。本题主要考查递归算法的应用。递归算法在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。熟练掌握递归算法的定义及应用。11.【答案】A第20页,共31页
【解析】查找过程如左图,变量n标记查找次数,在文本框Text1中输入17,遍历到二叉树第三层,此时i=7,j=6,循环结束,故标签Label1上显示的内容是3和7。故选:A。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及查找过程。12.【答案】B【解析】第一个for循环给a(i)赋值,最终赋值结果是[1,10]的整数且就行与i相反。
第二个for循环:当i=1时j=6到3,当i=2时j=6到5,循环体的条件语句实现了a(j)<a(j-2)。
A中a(3)>a(5),故错。Ca(i)与i奇偶性不相反,故错。D不符合a(j)<a(j-2)。
故选:B。VB中INT(X)函数是取不大于X的最大整数,RND( )用于产生[0,1)的随机数。
a(i)=Int(Rnd( )*10)+1,故a(i)取值范围是[1,10]的整数。
a(i) Mod 2=i Mod 2 Then i=i-1说明a(i)与i奇偶性相反。本题考查循环语句和条件语句以及程序的实现。13.【答案】C【解析】通过观察该数列可知,数列中最小的数字都比key大,所以应该在前半段查找,所以i的值恒为1故选:C。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序第21页,共31页
排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。利用排除法进行解答和选择。14.【答案】A【解析】执行从前往后两轮升序排列,排序条件为两位数的数字的乘积(个位*十位),即将两位数的数字乘积最大的两个数放在数组的最后两位,将各个选项两位数乘积算出后,可知A选项正确故选:A。本题主要考查冒泡排序算法。冒泡排序的思路为将相邻位置的关键字进行比较,若为逆序则交换之,重复该过程直到序列已排好序;选择排序算法的思路是每一次从待排序的数据元素中选出最小(或者最大)的一个元素,存放在序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或者最大)元素,然后放到已排序序列的末尾,依此类推,知道全部待排序的数据元素排完。熟练掌握冒泡算法的定义及排序的过程。15.【答案】C【解析】这是对分查找的变形,Int(10*Rnd)*2生成的是[0,18]所有偶数.
若key=0,n=-3;
若key=2,n=-1;
若key=4,n=-1;
若key=6,n=-1;
若key=8,n=0;
若key=10,n=0;
若key=12,n=0;
若key=14,n=-1;
若key=16,n=2;
若key=18,n=2;
故选:C。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到第22页,共31页
满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及查找过程。16.【答案】B【解析】有序列表共有13个元素,第一次查找为第七个元素,得到a(7)=45<key=82,进行第二次查找,得到m的值为10,此时a(10)=77<key,进行第三次查找,得到m的值为12,此时a(12)>key,进行第四次查找,此时m的值为11,此时a(11)=key,共进行四次查找。故选:B。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握二次查找的定义及查找过程。17.【答案】B【解析】查询过程可用如下二叉树表示,Key=Int(Rnd*50)+50,Key是随机生[50,99]之间的整数,显然当i>j时循环结束,故i的值不可能小于等于j;由二叉树可知,当查询到第三层时,即n=3,当到第4层时,不满足循环条件,退出循环,即n的值一定是3;m的值不可能是4,即时Key=76,还将继续往下查找;L表示往左查,R表示往右查,不可能出现L的值是1,R的值为3的情况,当查找到第四层时,循环已经结束。故选:B。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及查找过程。18.【答案】C【解析】阅读程序段可知,变量i共执行四次,其中在i=2和4时满足Else语句,执行s=s+Chr(t+26-i) Mod26+65),此时(t+26-i) Mod26的值应该是小于26的,所以在选项的偶数位上不会出现字母“Z”,因为Z是第26个字母,所以分析各个选项可得,选项C符合题意。
第23页,共31页
故选:C。本题考查的是python中的if语句。If-elif-else语句,形式:if
布尔表达式A:代码块A elif
布尔表达式B:代码块B else:代码块C,如果布尔表达式A为True,就执行代码A,否则就判断布尔表达式B的值,如果为True,就执行代码B;如果表达式A和表达式B都不为True,就执行代码C。熟练掌握分支语句的结构及结果的求解,题目难点适中。19.【答案】D【解析】已知key的取值范围为5,6,7。第一次查找 m=(i+j)/2=5
此时a(5)=4<key=5
执行i=m+1=6 t=t*3+2=2;第二次查找 m=(i+j)/2=8
此时a(8)=8<key=5不成立,执行j=m-1=7 t=t*3=6;第三次查找m=(i+j)/2=6
此时 a(6)=6与key相比较。若key=5,则t=18,若key=7
则t=20故选:D。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及查找过程。20.【答案】B【解析】执行该程序段后,cnt的值为3,数组元素实现有序,外循环i>=2,所以内循环j的取值为2到i。
故选:B。本题主要考查冒泡排序算法。冒泡排序的思路为将相邻位置的关键字进行比较,若为逆序则交换之,重复该过程直到序列已排好序;选择排序算法的思路是每一次从待排序的数据元素中选出最小(或者最大)的一个元素,存放在序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或者最大)元素,然后放到已排序序列的末尾,依此类推,知道全部待排序的数据元素排完。熟练掌握内外循环变量的取值范围。21.【答案】C【解析】If语句的分支条件中,等于key值的分支由下标i指向,因此若a(m)=key时,i将一直向右移动,直到越过j指针(等于key值区域)为止。若该序列中存在多个等于key值的数据,则j指向最后一个等于key值数的下标,而i指针指向的数据其值肯定小于key,故选项C第24页,共31页
符合题意。
故选:C。本题考查的是VB程序。If语句的分支条件中,等于key值的分支由下标i指向,因此若a(m)=key时,i将一直向右移动,直到越过j指针(等于key值区域)为止。若该序列中存在多个等于key值的数据,则j指向最后一个等于key值数的下标,而i指针指向的数据其值肯定小于key。熟练掌握选择语句的结构及最终的求解。22.【答案】D【解析】冒泡排序算法中的外层循环的次数为数组元素个数减一。①②③④四个选项中第一个空格位置填写的代码都是正确的。循环次数最终都可以写为y-x-1。为了减少答题步骤用排除法做本题。对比①③选项中的第二个空格部分代码。①选项的作用是让最大值移动到数组的末尾,代码正确。③选项第二个空格处代码对比的数组元素范围大概率超过了第y个元素,除非x值为0或1。③选项是错误的。故选:D。熟练掌握冒泡排序算法此类题过于复杂,把每个选项都搞清楚比较麻烦。建议用排除法做题。23.【答案】C【解析】本题把每个选项都说明一下比较麻烦,可以通过排除法选择。通过举例法说明选项的对错。如果数组第一个元素就是整个数组中的最小元素,程序段2就只会执行一次do循环,无法实现升序排序。②说法错误。当数组的所有元素是降序排序,那么程序段1中cnt的最大值就是n(n-1)/2,也是cnt最大的情况。同时也是程序段2中cnt最大值为n-1的情况。①说法正确。通过排除法选择C。故选:C。冒泡排序算法的实现熟练掌握do循环、for循环和if语句24.【答案】A【解析】第一次查找mid=50,此时53>mid,进行第二次查找,mid=75,此时53<75;进行第三次查找,mid=62,此时53<62;进行第四次查找,mid=56,此时此时53<56;进行第五次查找,mid=53此时查找结束。
故选:A。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相第25页,共31页
等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及查找过程。25.【答案】C【解析】rnd( )的取值范围是[0,1),Int(rnd( )*4)*2+1的取值数为1,3,5,7。所以在字符串中所取的四个字符为“P”“O”“R”“M”,根据选项只有选项C
符合题意故选:C。本题考查的是查找算法的相关知识。rnd( )的取值范围是[0,1),Int(rnd( )*4)*2+1的取值数为1,3,5,7。所以在字符串中所取的四个字符为“P”“O”“R”“M”,根据选项只有选项C
符合题意。这类题目可以用排除法进行选择,难度不大。26.【答案】C【解析】根据题意,第一次交换为15和2,第二次交换为15和1,第三次交换为15和14;第四次交换为2和1;第五次交换为19和15,第六次交换为17和15,此时数组中所有元素按照升序排列,故count共进行了6次累加,由于其初始值为0,所以终值为6故选:C。本题主要考查排序算法。根据题意,如果数组中前一个元素大于后一个元素则进行调换,知道与数组尾比较完为止,再进行第二个元素的比较,知道所有的元素均按照升序排列为止。问的是共进行了几次交换,题目难度适中。27.【答案】A【解析】第一次查找m=(1+6)2=3,所以f(3)=1,第二次查找f(1)或f(5)=2,第三次查找f(6)或者f(2)或f(5)=3,符合题意的为选项A故选:A。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及查找过程。28.【答案】D第26页,共31页
【解析】rnd( )*20的取值范围为[0,19],所以key的取值范围为[0,19]。数组共有15个元素,第一次查找m=8;假设向右查找,执行i=m+1=9;第二次查找m=12,继续向右查找,执行i=m+1=13;第三次查找m=14,执行i=m+1=15;此时仍满足i<=j所以再进行第四次查找,故共执行n=n+1四次故选:D。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及其查找过程。29.【答案】D【解析】数据序列“18,13,15,2,1,20”进行排序,第一轮排序后的结果为“1,18,13,15,2,20”,可知冒泡算法的思想进行升序排列数组,要完成最终的排序需要进行9轮比较最终完成故选:D。本题考查的是冒泡算法的相关知识。冒泡排序的思路为将相邻位置的关键字进行比较,若为逆序则交换之,重复该过程直到序列已排好序;选择排序算法的思路是每一次从待排序的数据元素中选出最小(或者最大)的一个元素,存放在序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或者最大)元素,然后放到已排序序列的末尾,依此类推,知道全部待排序的数据元素排完熟练掌握冒泡算法的定义及其排序过程。30.【答案】B【解析】分析程序可知,key
为[1,99]区间中的奇数,数据查找时,找到直接退出,向左查找加“L”,向右查找加“R”,所以显示2个“L”和1个“R”或2个“R”和1个“L”的值有[15,19],[53,65],[75,79],共13个故选:B。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。第27页,共31页
熟练掌握对分查找的定义及其查找过程31.【答案】B【解析】若输入Key值为12时,初始值i=1,j=8。
i<=j成立,第一次查找,m=(i+j)2=4,m Mod 2<>Key Mod 2
不成立,a(m)=Key不成立,a(4)=6>12不成立,执行i=m+2=6;
i<=j成立,第二次查找,m=(i+j)2=7,m Mod 2<>Key Mod 2
成立,执行m=m+1=8,a(8)=24>12成立,执行j=m-2=6;
i<=j成立,第三次查找,m=(i+j)2=6,m Mod 2<>Key Mod 2
不成立,a(m)=Key不成立,a(6)=20>12成立,执行j=m-2=4;
(i=6)<=(j=4)不成立,程序结束,i-j=2故选:B。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及其查找过程。32.【答案】D【解析】Rnd是随机生成[0,1)之间的数,Int(x)返回不大于x的最大整数,Int(Rnd*10)+1是随机生成[1,10]之间的整数,a(1)=12,a(i)=a(i-1)+Int(Rnd*10)+1,后2=5,key=15,一项至少比前一项大1,即a(5)>=16,第一次循环m=(1+10)即while不可能1遍循环就结束,c的值一定大于1故选:D。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及其查找过程。33.【答案】D第28页,共31页
【解析】若提示还是高了,则第三次猜12,依次类推;……。这种每次缩小一半查找范围而达到迅速确定目标的算法称为二分查找法故选:D。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及其查找过程。34.【答案】A【解析】迭代法也称辗转法,是用计算机解决问题的一种基本方法。迭代通常是为了接近并达到所需的目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值故选:A。本题考查的是迭代法的相关知识。迭代法也称辗转法,是用计算机解决问题的一种基本方法。迭代通常是为了接近并达到所需的目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。紧扣定义进行选择,难度不大。35.【答案】C【解析】变量p用于记录查找结果,首先将p赋值为-1,然后进入Do循环,如果在字符串s中截取s1字符串长度的字符与s1相同时,则查找成功,否则在s中后移一位,继续截取故选:C。本题主要考查VB循环结构。变量p用于记录查找结果,首先将p赋值为-1,然后进入Do循环,如果在字符串s中截取s1字符串长度的字符与s1相同时,则查找成功,否则在s中后移一位,继续截取。熟练掌握查找算法的基本思想和过程。36.【答案】C【解析】阅读程序可知,从高位开始比较,第一次先判断十位的大小,数据是降序排列,由j=m-1可知第一空为:Key10>a(m)10,第二空为:Key10<a(m)10;第二次判断个位,由j=m-1可知第三空为:Key Mod10>a(m) Mod 10,第四空为:Key Mod 10<a(m)
Mod 10故选:C。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序第29页,共31页
排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及其查找原理。37.【答案】C【解析】key=Int(Rnd*20)+3,key是随机生成[3,22]之间的整数,第一种情况,当key=3,经过程序执行,id=4;第二种情况,当key=21,经过程序执行,id=7;第三种情况,当key=22,经过程序执行,id=15。故执行该程序段后,标签Labell中显示的内容不可能的是13故选:C。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及其查找过程。38.【答案】D【解析】①For循环一次从最右端开始将最大的值送到最左边,j与j-1进行比较,所以j的初值是8。实现降序
③For循环一次从左端将最小的值送到最右边,j与j-1进行比较,所以j的初值是2。实现降序
故选:D。本题考查的是冒泡算法的相关知识。冒泡排序的思路为将相邻位置的关键字进行比较,若为逆序则交换之,重复该过程直到序列已排好序;选择排序算法的思路是每一次从待排序的数据元素中选出最小(或者最大)的一个元素,存放在序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或者最大)元素,然后放到已排序序列的末尾,依此类推,知道全部待排序的数据元素排完。熟练掌握冒泡算法的定义及其排序过程。39.【答案】D【解析】第一遍循环,与 4比较的是9,循环完数据序列为“3,4,5,0,9”;第二遍循环,与4比较的是3和5,循环完数据序列为“3,4,0,5,9”;第三遍循环,与4比较的是0,第30页,共31页
循环完数据序列为“3,0,4,5,9”;第四遍循环,与4比较的是3,循环完数据序列为“0,3,4,5,9”,故排序过程中数据“4”被比较的次数为5故选:D。本题考查的是冒泡算的相关知识。冒泡排序的思路为将相邻位置的关键字进行比较,若为逆序则交换之,重复该过程直到序列已排好序;选择排序算法的思路是每一次从待排序的数据元素中选出最小(或者最大)的一个元素,存放在序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或者最大)元素,然后放到已排序序列的末尾,依此类推,知道全部待排序的数据元素排完。熟练掌握冒泡排序的定义及其排序过程。40.【答案】D【解析】题干是查找降序序列中不小于key的下标最大值,如果key>a(m),则表示要查找的数在左边,则更新R的值为m(R的初值是从n+1开始),否则更新L的值为m+1,循环结束后,如果R不等于1,要显示不小于key的下标最大值,则下标最大值应是L-1故选:D。本题考查的知识点是二分查找法。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。熟练掌握对分查找的定义及其查找过程。第31页,共31页
更多推荐
查找,元素,关键字,排序,记录
发布评论