单选题

用分治法查找列表中是否存在指定的数字。 给定的列表已升序排序。 请补全程

序代码? ( )

#在列表 cards 中查找数字 x, 返回下标值, 若未找到, 返回-1

def serch(cards=list,x=int):

a=0 #定义左端点下标

b=len(cards)-1 #定义右端点下标

#逐级分割查找范围, 缩小查找规模

while a<=b:

m=(a+b)//2 #定义中点下标

if x==cards[m]: #x 刚好等于中点值

return m

elif ① : #x<中点值,说明 x 位于左段位置

b=m-1 #重新定义右端点

else:

a=m+1 #重新定义左端点

return -1 #未找到, 返回-1

#主程序

#在列表 d 中查找用户输入的数字 r

d=[1,6,16,24,44,46,79,80,81,82,87,102,134,151,156,188,196,202,212,226,228,248,272,274,286,306,321,351,363]

print(d) #显示一下列表 d

r=int(input("请输入要查找的数字:"))

y=serch(d,r) #调用子函数, d, r 是实参

if y>=0:

print("已找到",r,", 它是列表中第",y+1,"个数字")

else:

print("未找到",r)

A

x<cards[m-1]

B

x<cards[m]

C

x>cards[m-1]

D

x>cards[m]

赣ICP备20007335号-2