测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A44249. 任务:利用分治思想,在50个同学成绩(成绩不重复)中查找指定成绩的同学的编号,学生成绩存储在列表cj中;待查找的成绩由键盘输入到变量key中。根据上述算法思想,编写自定义函数完成程序功能,完善空白处代码。“”"函数名def search(lft,rgt,key)参数表:整数lft,rgt表示待查找列表的左右边界,key是待查找的成绩返回值:找到返回key所在编号,否则返回-1.“”"def se…

填空题 较难

题目描述

任务:利用分治思想,在50个同学成绩(成绩不重复)中查找指定成绩的同学的编号,学生成绩存储在列表cj中;待查找的成绩由键盘输入到变量key中。根据上述算法思想,编写自定义函数完成程序功能,完善空白处代码。

“”"

函数名def search(lft,rgt,key)

参数表:整数lft,rgt表示待查找列表的左右边界,key是待查找的成绩

返回值:找到返回key所在编号,否则返回-1.

“”"

def search(lft,rgt,key):

    if lft>rgt:

        return -1

    mid = ①

    if cj[mid] == key:

        return mid

    elif ② :

        lft = mid + 1

    else:

        rgt = mid - 1

        ③     

import random

cj = [random.randint(1,100) for i in range(50)]

cj.sort()

key = int(input(“输入待查找的成绩”))

pos = search(0,49,key)

print(pos)

参考答案

def search(lft,rgt,key): if lft>rgt: return -1 mid = (lft+rgt)//2 print(data[mid]) if data[mid] == key: return mid elif data[mid] < key: lft = mid + 1 else: rgt = mid - 1 return search(lft,rgt,key) import random data = [random.randint(1,100) for i in range(50)] data.sort() key = int(input(“输入待查找的成绩”)) pos = search(0,49,key) print(pos)

答案解析

① (lft+rgt)//2    (2分)

② cj[mid] < key    (3分)

③ return search(lft,rgt,key)   (3分)

上一题 下一题