会员号排序与二分查找积分
类型:程序题

题目说明

商超采用会员制,客户的消费信息如会员号、姓名和积分如下表所示,小方的爸爸想编写一个客户信息管理系统,其中有一个功能是:输入会员号,查询该会员的积分。

图片

小方知道后,就跃跃欲试,他首先从数据库读取客户信息到列表data中,其中data[i][0]存储第i条记录的会员号,data[i][1]存储第i条记录的姓名,data[i][2]存储第i条记录的积分;他首先将数组data中数据按会员号升序排序,然后用二分查找算法查找会员号对应的积分信息。代码如下,完善划线处的代码:

def bubble_sort(d):
    for i in range(len(d)-2):
        for j in range(len(d)-1,        ①        ,-1):
            if d[j][0] < d[j-1][0]:
                d[j],d[j-1] = d[j-1],d[j]
def bin_search(d, key):
    i,j = 0, len(d)-1
    while i <= j:
        m=(i +j)//2
        if        ②        :
            return m
        if key > d[m][0]:
            i = m+1
        else:
            j = m-1
    return -1
#从数据库读取会员信息存列表data中,代码略
data=[[8011,'张飞',12345],[8012,'李强',34512],[7812,'李好',45321]]
bubble_sort(data)
key = int(input('输入会员号:'))
m =         ③
if m!=-1:
    print (data[m][1],'先生/女士:您的积分是:',data[m][2])
else:
    print('该会员号不正确')

评分标准

  1. i(2分)

  2. d[m][0] == key(3分)

  3. bin_search(data,key)(3分)

代码编辑器 加载中...
留空使用题目默认限制
{{resultStatus.text}}
正在加载运行记录...
乐编题库AI助手
人工客服
微信扫码联系客服
历史对话
{{ s.title || '未命名对话' }}
{{ s.created_at }}
暂无历史对话
我能帮助你什么?