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

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

填空题 中等

题目描述

任务: 利用分治思想, 在 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 分)

上一题 下一题