单选题

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

#在列表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

B

x

C

x>cards[m-1]

D

x>cards[m]

赣ICP备20007335号-2