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 分)
上一题
下一题