内容正文:
浙教版(2019)选修1《第五章 数据结构与算法》2022年单元测试卷
一、选择题
1.某二分查找算法的python程序段如下:
import random
a=[10,20,30,40,50,60,70,80]
key=random.choice(a)
i,j=0,len(a)﹣1;s=“”
while i<=j:
m=(i+j)//2
if key==a[m]:
s=s+“M“;break
elif key<a[m]:
j=m﹣1;s=s+“L“
else:
i=m+1;s=s+“R“
该段代码执行后,s的值不可能是( )
A.LLM B.LRM C.RRRM D.RRLM
2.某算法的python程序段如下:
from random import randint
a=[23,21,19,18,16,15,14,11]
key=randint(0,3)*2+13
i,j,c=0,len(a)﹣1,0
while i<=j:
m=(i+j+1)//2
if a[m]>=key:
i=m+1
else:
j=m﹣1
c+=1
该程序段执行后,下列说法不正确的是( )
A.i的值为j+1 B.i的值可能是8
C.j的值可能是5 D.c的值一定是3
3.有如下 Python 程序段:
a=[10,15,32,32,45,53,53,65,77,98]
k=int(input( ));s=“”;left,right=0,len(a)﹣1
while left<=right:
m=(left+right)//2
if a[m]<k:
left=m+1;s=s+“R“
else:
right=m﹣1;s=s+“L“
该程序运行后,变量s的值可能是( )
A.“LR“ B.“LRL“ C.“LRR“ D.“RLR“
4.有如下Python程序段:
import random
a=[4,2,6,5,4,2,9,7]
k=random.randint(1,10)
i,j=0,len(a)﹣1
x=““
while i<=j:
m=(i+j)//2
if k<=a[m]:
j=m﹣1;x=x+“L“
else:
i=m+1;x=x+“R“
print(x)
执行该程序后,输出结果不可能是( )
A.LLL B.LRL C.RLR D.RRRR
5.某 Python 程序如下:
import random
a=[58,69,78,80,83,84,90,90,95]
key=random.randint(35,45)*2
i=0;j=len(a)﹣1;s=( )
while i<=j:
m=(i+j)//2
if key==a[m]:
break
elif key<a[m]:
j=m﹣1
else:
i=m+1
s.append(a[m])
则执行该程序段后,数组s中的元素不可能为( )
A.83,90,85 B.83,69,58 C.83,69,78 D.83,90,84
6.某 Python 程序如下:
import random
a=[58,69,78,80,83,84,90,90,95]
key=random.randint(35,45)*2
i=0;j=len(a)﹣1;s=( )
while i<=j:
m=(i+j+1)//2;s.append(a[m])
if key==a[m]:
break
elif key<a[m]:
j=m﹣1
else:
i=m+1
则执行该程序段后,数组s的值不可能为( )
A.[83,90,90,84] B.[83,78]
C.[83,78,69] D.[83,90,95]
7.某 Python 程序如下:
import random
a=[58,69,78,80,83,84,90,90,95]
key=random.randint(35,45)*2
i=0;j=len(a)﹣1;s=( )
while i<=j:
m=(i+j+1)//2
s.append(a[m])
if key<a[m]:
j=m﹣1
else:
i=m+1
则执行该程序段后,数组s中的元素不可能为( )
A.83,90,95 B.83,78,80
C.83,90,90,84 D.83,78,69,58
8.有如下Python程序段:
a=[99,85,74,68,53,42,34,27,20,13]
key=int(input(“请输入一个整数:“));i,j,k,c=0,9,0,“N“
while i<=j:
m=(i+j+1)//2;k=k+1
if key==a[m]:
c=“Y“;break
if key>a[m]:
j=m﹣1
else:
i=m+1
print(c,k)
执